选择排序是对冒泡排序的改进,每一趟在n-i(i=0,1,…n-2)个记录中选取关键字最小的记录作为有序序列中第i个记录.
/*
============================================================================
Name : choice_sort.c
Author : braveboyny
Version :
Copyright : Your copyright notice
Description : choice sort in C, Ansi-style
============================================================================
*/
#include <stdio.h>
#include <stdlib.h>
#define SWAP(a,b) (a=a+b,b=a-b,a=a-b)
void choice_sort(int array[],int n)
{
int i,j,min;
for(i=0;i<n-1;i++){
min=i;
for(j=i+1;j<n;j++)
if(array[min]>array[j]) /*升序排列*/
min=j;
if(min!=i)
SWAP(array[i],array[min]);
}
}
int main(void) {
int array[10]={8,2,3,6,5,9,4,1,0,7},i;
choice_sort(array,10);
for(i=0;i<10;i++)
printf("%d ",array[i]);
putchar('\n');
return 0;
}
//out:0 1 2 3 4 5 6 7 8 9