1 /********************************************************************************************************** 2 * Function : test 3 * Create Date : 2014/03/23 4 * Author : NTSK13 5 * Email : beijiwei@qq.com 6 * Copyright : 欢迎大家和我一起交流学习,转载请保持源文件的完整性。 7 任何单位和个人不经本人允许不得用于商业用途 8 转载请注明 转自 http://blog.csdn.net/beijiwei 9 * Version : V0.1 10 * date : 2014/03/23 11 * history : V0.1 12 *********************************************************************************************************** 13 14 基础算法之排序(2)--选择排序 15 16 基本思想: 对待排序的一组数据从前之后进行扫描,若发现相邻的两个数不同时,将这两个数进行交换. 17 升序和降序是同样道理 18 假如待排序的一组数存于array[N],则需要对数组进行N-1次扫描 19 第1次扫描: 目标array[0] , 分别和array[1],array[2]...array[N] 进行对比,若比array[0]小,则交换.之后array[0]为最小值 20 第2次扫描: 目标array[1] , 分别和array[2],array[3]...array[N] 进行对比,若比array[1]小,则交换.之后array[0]为次小值 21 . 22 . 23 . 24 第N-1次扫描: 目标array[N-2] , 和array[N-1] 进行对比,若比array[N-1]小,则交换.之后array[N-1]为最大值. 25 结束. 26 27 **********************************************************************************************************/ 28 #include<stdio.h> 31 int main() 32 { 33 int i=0,j=0,tmp=0,array[10]={2,5,6,8,4,3,1,7,9,0}; 34 35 printf("Before sort, The element of array is: "); 36 37 for(i=0;i<10;i++) 39 printf("%d ",array[i]); 41 /*********************************************************************************************************/ 42 for(i=0;i<9;i++) 43 for(j=i;j<9;j++) 44 { 45 if(array[i]>array[j+1]) 46 { 47 tmp=array[i]; 48 array[i]=array[j+1]; 49 array[j+1]=tmp; 50 } 51 52 } 53 54 /*********************************************************************************************************/ 55 printf(" After sort, The element of array is: "); 56 for(i=0;i<10;i++) 58 printf("%d ",array[i]); 60 61 printf(" "); 62 63 return 0; 64 }