首页 > 代码库 > 算法基础之排序(2)--选择排序 改进
算法基础之排序(2)--选择排序 改进
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 19 假如待排序的一组数存于array[N],则需要对数组进行N-1次扫描 20 21 第1次扫描: 目标array[0] , 分别和array[1],array[2]...array[N-1] 进行对比,若比array[0]小,则交换.之后array[0]为最小值 22 第2次扫描: 目标array[1] , 分别和array[2],array[3]...array[N-1] 进行对比,若比array[1]小,则交换.之后array[0]为次小值 23 . 24 . 25 . 26 第N-1次扫描: 目标array[N-2] , 和array[N-1] 进行对比,若比array[N-1]小,则交换.之后array[N-1]为最大值. 27 结束. 28 29 30 缺点: 这种方法如果两个数不等,则每次都要交换. 31 32 改进: 在一次扫描时,只记录下标,等该次扫描结束,有改变再交换大小. 33 34 **********************************************************************************************************/ 35 #include<stdio.h> 36 37 38 int main() 39 { 40 int i=0,j=0,tmp=0,k=0,array[10]={2,5,6,8,4,3,1,7,9,0}; 41 42 printf("Before sort, The element of array is: \n"); 43 44 for(i=0;i<10;i++) 45 printf("%d \t",array[i]); 46 47 /*********************************************************************************************************/ 48 for(i=0;i<9;i++) 49 { 50 tmp=array[i]; 51 k=0; 52 for(j=i+1;j<9;j++) 53 { 54 if(tmp>array[j]) 55 { 56 tmp=array[j]; 57 k=j; 58 } 59 } 60 if(k!=0) 61 { 62 tmp=array[i]; 63 array[i]=array[k]; 64 array[k]=tmp; 65 } 66 } 67 68 /*********************************************************************************************************/ 69 printf("\n After sort, The element of array is: \n"); 70 for(i=0;i<10;i++) 71 printf("%d \t",array[i]); 72 73 printf("\n"); 74 75 return 0; 76 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。