个人主页: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--;}
}