个人主页:Lei宝啊
愿所有美好如期而遇
前言:
在我们的生活中,无处不在用到排序,比如说成绩的排名,淘宝,京东等等商品在各个方面的排序,这样看来一个好的算 法很重要,接下来我们要先了解一下比较挫的两个排序算法。
冒泡排序:
思路:
我们要做的就是将一组数据升序或者降序排列,使用两个循环,里面的循环在升序情况下,将最大的数字排到最后,为一次排序,外面的循环控制排序次数。
图解:
代码:
void Bubble_Sort(int* arr, int n) { int temp = 0; for (int i = 0; i < n - 1; i++) { int flag = 0; for (int j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; flag = 1; } } if (flag == 0) { break; } } }
选择排序:
思路:
类似于冒泡排序,也需要两个循环,我们需要一个开始位置和末尾位置,即begin和end,然后选出最小的数放在begin位置,最大的数放在end位置,然后同时往中间走,重复操作,直到相遇。
图解:
代码:
void SelectSort(int* arr, int n) { int left = 0; int right = n - 1; while (left < right) { int max = left; int min = left; for (int i = left + 1; i <= right; i++) { if (arr[max] < arr[i]) { max = i; } if (arr[min] > arr[i]) { min = i; } } Swap(&arr[max], &arr[right]); if (min == right) { min = max; } Swap(&arr[min], &arr[left]); left++; right--; } }