目录
一、前言:
选择排序是不稳定的,比8948797这堆数据,选择排序的做法是先浏览一圈这堆数据,
然后在这堆数据中找出最小的元素和这堆数据中第一个元素交换位置,然后在浏览一圈找出剩下
数据中最小的元素,和第二个元素交换位置,以此类推
二、选择排序概念:
选择排序是一种简单直观的排序算法
它的工作原理是:第一次从待排序的数据元素中选出最小(最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾
以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。
三、算法思路:
对于一个元素个数为n的数组,我们可以将下标为n-1的元素,也就是这个数组的最后一个
元素,将这个元素和前面的所有的元素一一进行比较,也就是arr[n - 1]和arr[0]到arr[n-2]这个区间
的元素进行比较,比较完一趟之后,就确定了一个最大的元素了,然后第二趟比较就用arr[n-2]和
arr[0]到arr[n-3]这个区间进行比较,那么最后一次比较就是数组的一个元素和第二个元素进行比较。
四、代码实现:
void select_sort(int arr[], int size)
{
//外层循环
for (int i = size - 1; i > 0; i--)//拿i和前面的数组元素比较,内层循环是遍历整个数组,
//为的就是使i能够和整个数组元素进行比较
{
for (int j = 0; j < i; j++)//因为是i之前的元素进行比较,从前往后遍历
//for(int j=i-1;j>=0;j--)从后往前遍历
{
if (arr[i]<arr[j])//拿i和j区间的元素进行比较
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}