选择排序(Selection Sort)是一种简单直观的排序算法,它的基本思想是通过重复从未排序的部分选择最小(或最大)的元素,并将其放到已排序部分的末尾,直到整个列表都排序完成,也就是说,他先把数组先分成了两个部分,一个是有序的,一个是无序的,如果我们是从小到大排序,那么每次都从未排序的部分中找到最小的,然后放到有序的部分中。
选择排序的基本步骤如下:
- 首先,假设整个列表为未排序部分。
- 在未排序部分中,找到最小(或最大)的元素,并将其与未排序部分的第一个元素交换位置,使得该最小(或最大)元素成为已排序部分的最后一个元素。
- 然后,将未排序部分的范围缩小一个元素,继续执行步骤2,直到整个列表都排序完成。
- 时间复杂度为 O(n^2)。
接下里我们给出一段选择排序的示例c代码
void select_sort(int *array, int array_num)
{int i = 0;int j = 0;int pos = 0; int temp = 0; printf("select sorting\n");for (i=0; i<array_num; i++){pos = i;//找到最小的数字对应的那个数组角标for (j=i+1; j<array_num; j++){if ( array[j]<array[pos] ){pos = j;}}temp = array[i];array[i] = array[pos];array[pos] = temp;}
}