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