简单选择排序的基本思想是每一趟在后面n-i+1个待排序元素中选取关键字最小的元素,作为有序子序列的第i个元素,直到n-1趟做完。
在待排序数组中选出最小的(或最大)的与第一个位置的数据交换 然后在剩下的待排序数组中找出最小(或最大)的与第二个位置的数据交换,以此类推,直到第n-1个元素。
简单选择排序可以说是冒泡排序的一种改版,它不再两两比较出较小数就进行交换,而是每次遍历比较当前数的后面所有数,最后再把最小的数和当前数进行交换。
选择排序和冒泡排序虽然都是每一次选出一个最值放在有序子序列中,但二者亦有区别。冒泡排序在选择最值元素的时候 ,每次比较都有可能进行交换,当逆序的时候,一次排序就可能交换n-1回,但选择排序在选择最值元素时,只进行比较,只有对当次待比较的元素全比较完后,才进行一次交换,交换次数更少。
#include <stdio.h>
#include <windows.h>
#include <stdint.h>
void Simple_select_sort(int a[],int size);
int main()
{
int k;
int num[9]={9,8,7,4,6,5,1,2,3};
int sortsize=sizeof(num)/sizeof(num[0]);
Simple_select_sort(num,sortsize);
for(k=0;k<sortsize;k++)
printf("\n%d",num[k]);
system("pause");
return 0;
}
void Simple_select_sort(int a[],int size)
{
int i,j,min_value,temporary;
for(i=0;i<size;i++)
{
min_value=i;
for(j=i+1;j<size;j++)
{
if(a[j]<a[min_value])
min_value= j;
}
temporary=a[i];
a[i]=a[min_value];
a[min_value]=temporary;
}
}