冒泡排序是非常容易理解和实现,,以从小到大排序举例:
设数组长度为N。
1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。
2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。
3.N=N-1,如果N不为0就重复前面二步,否则排序完成。
按照定义很容易写出代码:
-
-
voidBubbleSort1(inta[],intn)
-
{
-
inti,j;
-
for(i=0;i<n;i++)
-
for(j=1;j<n-i;j++)
-
if(a[j-1]>a[j])
-
Swap(a[j-1],a[j]);
-
}
下面对其进行优化,设置一个标志,如果这一趟发生了交换,则为true,否则为false。明显如果有一趟没有发生交换,说明排序已经完成。
-
-
voidBubbleSort2(inta[],intn)
-
{
-
intj,k;
-
boolflag;
-
-
k=n;
-
flag=true;
-
while(flag)
-
{
-
flag=false;
-
for(j=1;j<k;j++)
-
if(a[j-1]>a[j])
-
{
-
Swap(a[j-1],a[j]);
-
flag=true;
-
}
-
k--;
-
}
-
}
再做进一步的优化。如果有100个数的数组,仅前面10个无序,后面90个都已排好序且都大于前面10个数字,那么在第一趟遍历后,最后发生交换的位置必定小于10,且这个位置之后的数据必定已经有序了,记录下这位置,第二次只要从数组头部遍历到这个位置就可以了。
-
-
voidBubbleSort3(inta[],intn)
-
{
-
intj,k;
-
intflag;
-
-
flag=n;
-
while(flag>0)
-
{
-
k=flag;
-
flag=0;
-
for(j=1;j<k;j++)
-
if(a[j-1]>a[j])
-
{
-
Swap(a[j-1],a[j]);
-
flag=j;
-
}
-
}
-
}
冒泡排序毕竟是一种效率低下的排序方法,在数据规模很小时,可以采用。数据规模比较大时,最好用其它排序方法。
分享到:
相关推荐
3进一步改进的冒泡排序,如果在某次冒泡过程中,最后一次进行交换的位置为flag,则表示flag之后的序列已经有序,那么下一次冒泡就无需比较flag之后的序列,即只要比较到flag就可以结束此次冒泡过程。当flag=0时,...
冒泡排序详解,简单而详细的讲清楚了,什么是冒泡排序。 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首...
用函数实现冒泡排序,并输出每趟排序的结果(要求当一趟冒泡过程中不再有数据交换,则排序结束) Input 第一行:键盘输入待排序关键的个数n 第二行:输入n个待排序关键字,用空格分隔数据 Output 每行输出每趟排序...
冒泡算法的改进思想: 1.记录从第0下标开始一直递增的最后一个数的下标start,在以后的每趟排序中都是从start下标开始比较,免去了从头到此下标的比较 2.记录从最后一个下标开始一直递减的最后一个下标end,在以后...
js冒泡排序,冒泡排序的工作原理,我们有一个未排序的数组arr = [ 1, 4, 2, 5, -2, 3 ]任务是使用冒泡排序对数组进行排序。 冒泡排序比较索引 0 中的元素,如果第 0 索引大于第 1 索引,则交换值,如果第 0 索引...
冒泡排序-排序过程 设想被排序的数组R[1..N]垂直竖立,将每个数据元素看作有重量的气泡,根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R,凡扫描到违反本原则的轻气泡,就使其向上"漂浮",如此反复进行,...
初学LabelView写的冒泡排序。 随机产生数组元素,并进行冒泡排序。
C++实现冒泡排序,多层次,快速实现排序算法
关于冒泡排序的完整代码。冒泡排序,是指计算机的一种排序方法,它的时间复杂度为O(n^2),虽然不及堆排序、快速排序的O(nlogn,底数为2),但是有两个优点:1.“编程复杂度”很低,很容易写出代码;2.具有稳定性...
LabVIEW实现冒泡算法求数组最大值
VerilogHDL/VHDL开发之Verilog实现冒泡排序
冒泡法matlab实现,冒泡法是一种典型的排序方法,文件给出用matlab实现的源代码
这是一个简单的Python程序,用于生成10个100以内的随机整数并进行冒泡排序。 程序首先使用random模块的randint()函数生成10个0-100之间的随机整数,存储在numbers列表中。 然后使用冒泡排序算法对numbers列表进行排序...
java冒泡排序代码,亲测能用,控制台输入数据,自动排序
冒泡冒泡 冒泡 快速 比较快速 比较 快速 比较 冒泡 快速 比较
C语言冒泡排序C语言冒泡排序C语言冒泡排序
1.冒泡排序的原理:每次都从第一个元素开始(索引0),向后两两比较,只要后面的比前面的大,就交换(从大到小) 2.通过画图分析,5个数字排4趟,n数字排n-1趟,而外层的for循环代表的是循环的趟数,所以外层循环的结束条件是...
阻止滚动条事件mousewheel冒泡,当网页内部元素滚动条到顶或底时不触发浏览器窗口的滚动条事件。
C语言 冒泡法排序 C语言 冒泡法排序 C语言 冒泡法排序 C语言 冒泡法排序 C语言 冒泡法排序 C语言 冒泡法排序
实验3 冒泡排序程序