冒泡排序
作者:互联网
冒泡排序
-
如果遇到相等的值不进行交换,那么可以说这种排序方式是稳定的
-
冒泡排序原理:依次比较相邻的两个数,将值大的元素交换到右边
-
比较小的放在前面,大的数放后面
-
思路
-
依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面。
-
(1)第一次比较:首先比较第一和第二个数,将小数放在前面,将大数放在后面。
-
(2)比较第2和第3个数,将小数 放在前面,大数放在后面。
-
(3)如此继续,知道比较到最后的两个数,将小数放在前面,大数放在后面,重复步骤,直至全部排序完成
-
(4)在上面一趟比较完成后,最后一个数一定是数组中最大的一个数,所以在比较第二趟的时候,最后一个数是不参加比较的。
-
(5)在第二趟比较完成后,倒数第二个数也一定是数组中倒数第二大数,所以在第三趟的比较中,最后两个数是不参与比较的。
-
(6)依次类推,每一趟比较次数减少依次
-
外层循环是数值总个数需要的比较次数,内层循环是依次将前后数值进行比较
-
-
代码一
-
void bubblesort(int a[] ,int n){ for(int i=1;i<n;i++){ for(int j=0;j<n-i;j++){ if(a[j]<a[j+1]){ int temp = a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } for(int i=0;i<n;i++){ cout << a[i]; } }
-
外层循环锁定数组中的一个数值,内层循环遍历数组与外层循环值进行比较,比外层循环数值小的就交换到外层循环锁定的值的下标处,一次循环可以锁定一个最小值,然后就不用管最小值所在下标。外层循环加1,内层循环跟着外层循环转变,继续比较再次找出一个剩余数最小值,然后就可以完成冒泡排序
代码二
-
void bubblesort(int a[] ,int n){ for(int i=0;i<n;i++){ for(int j=i;j<n;j++){ if(a[j]<a[i]){ int temp = a[j]; a[j]=a[i]; a[i]=temp; } } } for(int i =0;i<n;i++){ cout <<a[i]; } }
-
标签:外层,int,冒泡排序,放在,循环,比较 来源: https://www.cnblogs.com/popzj-1/p/15042766.html