选择排序是一种简单的排序算法,它每次从未排序的部分选择最小(或最大)的元素,然后将其放置在已排序部分的末尾。通过重复这个过程,直到所有元素都被排序。
具体描述选择排序的步骤如下:
从数组的第一个元素开始,将其视为当前未排序部分的最小(或最大)元素。
遍历未排序部分的元素,逐个与当前最小(或最大)元素进行比较。
如果找到比当前最小(或最大)元素更小(或更大)的元素,就更新最小(或最大)元素的位置。
在遍历完未排序部分的所有元素后,将找到的最小(或最大)元素与未排序部分的第一个元素交换位置,将其放置在已排序部分的末尾。
现在,第一个元素已经是最小(或最大)元素,将其作为已排序部分的一部分。
重复执行上述步骤,对剩余的未排序部分进行选择和交换,直到所有元素都被排序。
选择排序的特点是每次遍历找到未排序部分的最小(或最大)元素,然后将其放置在已排序部分的末尾。相比冒泡排序,选择排序的交换操作较少,因此在某些情况下可能更加高效。但是,选择排序的时间复杂度始终为O(n^2),无论输入数据的情况如何,都需要进行相同数量的比较和交换。
#include <stdio.h>
int main()
{
int array[] = {12,8,13,9,19,25,66,88};
int i;
int j;
int tmp;
int len = sizeof(array)/sizeof(array[0]);
//简单的选择排序算法
for (i=0;i<len-1;i++){
for (j=i+1;j<len;j++){
if(array[i] < array [j]){
tmp=array[j];
array[j]=array[i];
array[i]=tmp;
}
}
}
for(i=0;i<len;i++){
printf("%d ",array[i]);
}
return 0;
}