冒泡排序

软件测试人员需要掌握的一些基本数据结构算法(php编写)

随声附和 提交于 2019-12-01 07:43:17
一:冒泡排序算法   冒泡排序(Bubble Sort)算法是一种典型的交换排序算法,通过两两数据交换进行排序。如果有n个数,则要进行n-1趟比较,在第1趟比较中要进行n-1次两两比较,在第j趟比较中要进行n-j次两两比较。   复杂度分析:冒泡排序需要 次交换。 1 <?php 2 /** 3 *冒泡排序算法 4 **/ 5 6 //定义一个数组,并赋值 7 $arr=array(3,5,8,4,9,6,1,7,2); 8 9 //封装一个方法BubbleSort 10 function BubbleSort($arr){ 11 12 $length=count($arr);//count()函数是计算数组中单元数目或者对象中的属性个数 13 14 if($length<=1){ 15 return $arr; 16 } 17 18 for($i=0;$i<$length-1;$i++){ 19 for($j=0;$j<$length-1-$i;$j++){ 20 if($arr[$j]>$arr[$j+1]) 21 $t=$arr[$j]; 22 $arr[$j]=$arr[$j+1]; 23 $arr[$j+1]=$t; 24 } 25 } 26 } 27 28 return $arr; 29 } 30 31 echo '冒泡排序:'; 32 echo implode(','

冒泡排序

ぐ巨炮叔叔 提交于 2019-12-01 05:05:47
冒泡排序 思路 1.依次对数组中每对相邻的元素比对,如果前者比后者大,那么它们就交换位置,这样一趟下来总能把一个最大元素送到末尾的位置 2.可以这么说,每一趟排序进行之后使得数组后面的有序部分规模在增大,前面的无序部分规模在减小 3.经过这样多次交换之后数组就有序了 代码 package sort; public class BubbleSort { public static void main(String[] args) { // TODO Auto-generated method stub int [] a= {6,-1,3,-3,2,9,1,2,3}; bubblesort(a); for(int i=0;i<a.length;i++) { System.out.printf("%d ",a[i]); } System.out.println(); } //冒泡排序 public static void bubblesort(int[] arr) { int len=arr.length; int temp; boolean flag=false;//表示是否交换过 for(int i=0;i<len;i++) { for(int j=0;j<len-i-1;j++) { if(arr[j]>arr[j+1]) { temp=arr[j]; arr[j]=arr[j+1

冒泡排序

旧街凉风 提交于 2019-12-01 02:59:58
转载于:https://www.jianshu.com/p/88759596c944 这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。   1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。   2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。   3. 针对所有的元素重复以上的步骤,除了最后一个。   4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 来源: https://www.cnblogs.com/wsnan/p/11649795.html

冒泡排序与选择排序

孤者浪人 提交于 2019-12-01 02:58:10
一、冒泡排序 1 package day0911; 2 3 import java.util.Arrays; 4 5 /** 6 * 冒泡排序 7 */ 8 public class MaoPaoPaiXu { 9 public static void main(String args[]){ 10 //定义一个数组 11 int [] maopao = {32,16,68,54,97,85,13,20}; 12 //外层循环-1,maopao.length表示数组长度 13 for(int i=0;i<maopao.length-1;i++){ 14 //内层循环-1-i,总共八个数 15 for (int j=0;j<maopao.length-1-i;j++){ 16 //定义一个空瓶子 17 int temp = 0; 18 //三个空瓶子互换模式 19 //如果前面的大于后面的,则把前面的数换到后面来,从小到大排序 20 //如果想从大到小排序,则用小于符号 21 if (maopao[j]>maopao[j+1]){ 22 //如果maopao[j]大于后面的,则赋值给空瓶子 23 //如果不大于,则maopao[j]位置不变 24 temp=maopao[j]; 25 //如果前后对比数值小,则前移 26 maopao[j]=maopao[j+1]; 27 /

面试前的准备(java专业 ~学习算法排序以及查找)

放肆的年华 提交于 2019-12-01 01:59:51
java专业的马上大三,东西学的差不多,但是数据结构这块特别薄弱,所以面试前对自己数据结构进行巩固复习(PS:其实是预习啦~) 针对自己薄弱的几块进行记录:(排序和查找) 每天都在叫嚣自己会什么技术,什么框架,可否意识到你每天都在被这些新名词、新技术所迷惑,.NET、XML等等技术固然诱人,可是如果自己的基础不扎实,就像是在云里雾里行走一样,只能看到眼前,不能看到更远的地方。这些新鲜的技术掩盖了许多底层的原理,要想真正的学习技术还是走下云端,扎扎实实的把基础知识学好,有了这些基础,要掌握那些新技术也就很容易了。 要编写出优秀的代码同样要扎实的基础,如果排序和查找算法学的不好,怎么对程序的性能进行优化?废话不多说,本文要介绍的这些排序算法就是基础中的基础,程序员必知!(引自:http://www.cr173.com/html/15301_1.html) 1、排序 1.插入排序—直接插入排序(Straight Insertion Sort) 2. 插入排序—希尔排序(Shell`s Sort) 3. 选择排序—简单选择排序(Simple Selection Sort) 4. 选择排序—堆排序(Heap Sort) 5. 交换排序—冒泡排序(Bubble Sort) 6. 交换排序—快速排序(Quick Sort) 7. 归并排序(Merge Sort) 8. 桶排序/基数排序

冒泡排序

一笑奈何 提交于 2019-11-30 23:30:45
一、前言 冒泡排序是一种 交换排序。 什么是交换排序呢? 答曰:两两比较待排序的关键字,并交换不满足次序要求的那对数,直到整个表都满足次序要求为止。 二、算法思想 它重复地走访要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端,故名冒泡排序。 动态效果示意图: 假设有一个大小为 N 的无序序列。以升序冒泡排序为例,冒泡排序就是要 每趟排序过程中通过两两比较相邻元素,将小的数字放到前面,大的数字放在后面。 def bubbleSort(input_list): ''' 函数说明:冒泡排序(升序) Author: www.cuijiahua.com Parameters: input_list - 待排序列表 Returns: sorted_list - 升序排序好的列表 ''' if len(input_list) == 0: return [] sorted_list = input_list for i in range(len(sorted_list) - 1): print('第%d趟排序:' % (i + 1)) for j in range(len(sorted_list) - 1): if sorted_list

冒泡排序的记录

为君一笑 提交于 2019-11-30 20:33:01
代码如下: 1 #include <stdio.h> 2 3 void outArr(int arr[], int arrSize){ 4 for(int i = 0; i < arrSize; i++){ 5 printf("%d\t", arr[i]); 6 } 7 printf("\n"); 8 9 return; 10 } 11 12 void bubbleSort1(int arr[], int arrSize){ 13 int tmp = 0; 14 for(int i = 0; i < arrSize; i++){ 15 for(int j = i + 1; j < arrSize; j++){ 16 if(arr[j - 1] > arr[j]){ 17 tmp = arr[j]; 18 arr[j] = arr[j - 1]; 19 arr[j - 1] = tmp; 20 } 21 //outArr(arr, arrSize); 22 } 23 } 24 25 return; 26 } 27 28 void bubbleSort2(int arr[], int arrSize){ 29 int tmp = 0; 30 for(int i = arrSize - 1; i >= 0; i--){ 31 for(int j = i + 1; j < arrSize;

C语言之冒泡排序

冷暖自知 提交于 2019-11-30 19:50:35
# include<stdio.h> int main(void) { int arr[10]={5,4,7,9,2,3,1,6,10,8}; //定义一个位排序的数组 int i; //定义循环次数 int n = 0; //定义排序次数 int length=10; //定义数组长度 while(n < length) //控制比较次数 { for(i = 0 ; i < length-1-n ; i++) { int tmp = 0; //交换顺序时临时存放数字 if(arr[i] > arr[i+1]) //比较两个数字时,如果前一个数字大于后一个数字则交换位置 { tmp = arr[i]; //交换两个数字的顺序 arr[i] = arr[i+1]; arr[i+1] = tmp; } } n++; //控制比较次数 } for(i = 0 ; i < length ; i++) //打印排序后的数组 { printf("%d ",arr[i]); } return 0; } 来源: https://www.cnblogs.com/Timesi/p/11638236.html

冒泡排序

£可爱£侵袭症+ 提交于 2019-11-30 18:11:48
1.原理图 2.代码 public class Test { public static void main(String[] args) { int[] list = {5,20,9,88,43,22,10}; bubbleSort(list); } public static void bubbleSort(int[] list) { int temp = 0; // 用来交换的临时数 // 要遍历的次数 for (int i = 0; i < list.length - 1; i++) { // 从后向前依次的比较相邻两个数的大小,遍历一次后,把数组中第i小的数放在第i个位置上 for (int j = list.length - 1; j > i; j--) { // 比较相邻的元素,如果前面的数大于后面的数,则交换 if (list[j - 1] > list[j]) { temp = list[j - 1]; list[j - 1] = list[j]; list[j] = temp; } } System.out.format("第 %d 趟:\t", i); for (int a : list){ System.out.print(a); System.out.print(" "); } System.out.println(); // printAll(list)

python--冒泡排序

℡╲_俬逩灬. 提交于 2019-11-30 16:59:21
所谓冒泡,就是将元素两两之间进行比较,谁大就往后移动,直到将最大的元素排到最后面,接着再循环一趟,从头开始进行两两比较,而上一趟已经排好的那个元素就不用进行比较了。 冒泡排序的思想: 每次比较两个相邻的元素, 如果他们的顺序错误就把他们交换位置。 冒泡排序原理: 每一趟只能将一个数归位, 如果有n个数进行排序,只需将n-1个数归位, 也就是说要进行n-1趟操作(已经归位的数不用再比较)。 缺点: 冒泡排序解决了桶排序浪费空间的问题, 但是冒泡排序的效率特别低 python冒泡排序的代码实现 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 li = [33, 4, 15, 1, 456, 75, 45, 30, 20, 78, 99, 100, 67, 23, 10, 7] 5 print("排序前:", li) 6 for j in range(1, len(li)): 7 for i in range(len(li) - j): 8 if li[i] > li[i + 1]: 9 temp = li[i] 10 li[i] = li[i + 1] 11 li[i + 1] = temp 12 print("排序后:", li) View Code 来源: https://www.cnblogs.com/june-L/p