码迷,mamicode.com
首页 > 编程语言 > 详细

001 C/C++ 选择排序法

时间:2019-06-22 13:26:36      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:code   int   amp   nbsp   下标   baidu   sort   交换   选择排序   

简单选择排序:

选择排序法 是对 定位比较交换法(也就是冒泡排序法) 的一种改进。

选择排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。

简单选择排序的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。

以下为简单选择排序的存储状态,其中大括号内为无序区,大括号外为有序序列:
初始序列:{49 27 65 97 76 12 38}
  第1趟:12与49交换:12{27 65 97 76 49 38}
  第2趟:27不动 :12 27{65 97 76 49 38}
  第3趟:65与38交换:12 27 38{97 76 49 65}
  第4趟:97与49交换:12 27 38 49{76 97 65}
  第5趟:76与65交换:12 27 38 49 65{97 76}
  第6趟:97与76交换:12 27 38 49 65 76 97 完成

C Sample code:

 1 void SelectSort( int a[], int length )
 2 {
 3     //对数组a排序,length是数组元素数量
 4     for( int i = 0; i < length; i++ ) {
 5         // 找到从i开始到最后一个元素中最小的元素,k存储最小元素的下标.
 6         int k = i;
 7         for( int j = i + 1; j < length; j++ ) {
 8             if( a[j] < a[k] ) { k = j; }
 9         }
10 
11         // 将最小的元素a[k] 和 开始的元素a[i] 交换数据.
12         if( k != i ) {
13             int temp;
14             temp= a[k];
15             a[k] = a[i];
16             a[i] = temp;
17         }
18     }
19 }

 

001 C/C++ 选择排序法

标签:code   int   amp   nbsp   下标   baidu   sort   交换   选择排序   

原文地址:https://www.cnblogs.com/it89/p/11068215.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!