1、基本概念
这里使用C++来实现冒泡排序法
冒泡排序法采用不停地交换彼此位置来实现,故而形象地称之为冒泡
冒泡排序主要是由两层循环组成(这里记下来的原因就是两层循环的停止条件,自己编写出了错误)。
1、外层循环:主要是用来轮询;
2、内层循环:主要用来交换位置(前提是满足if条件)
3、外层循环的条件i < n - 1,内存循环的停止条件为j < n-i-1;
2、代码实现
1 void BubbleSort(int arr[], int n) 2 { 3 for (int i = 0; i < n - 1; i++) 4 { 5 for (int j = 0; j < n - i - 1; j++) 6 { 7 if (arr[j] > arr[j + 1]) 8 { 9 int temp = arr[j]; 10 arr[j] = arr[j + 1]; 11 arr[j + 1] = temp; 12 } 13 } 14 } 15 }
首先,冒泡排序是比较排序,比较次数需要n-1次,因此,外部循环条件为i < n -1;同时由于arr[j+1],不使用n-1的话,arr[j+1]就会发生越界行为(超出了数组最大数组下标);
接着,再看为什么需要减掉i呢?因为内层循环每完成一次,最大那个值(或最小那个值),就已经交换到了最后的位置,所以下次交换的时候我们就要减少一次交换已经排序好的元素,依次类推。
标签:arr,int,交换,冒泡排序,循环,条件 From: https://www.cnblogs.com/Zhouce/p/18108964