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

排序-选择排序

时间:2017-08-18 14:40:28      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:pre   style   一个   重复   int   这一   过程   交换   比较   

选择排序的过程如下:

  1. 假设第1个元素为最小元素。
  2. 从第2个元素开始,依次遍历数组每个元素并和第一个元素比较,如果比第一个元素小,则置换位置,这一轮遍历下来,会找出最小元素并放在第1个位置上。
  3. 重复第一步,假设第2个元素为次小的元素,并执行第二步,从第3个元素开始遍历。

用代码写出来结果就是:

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 void change(int *p,int pos1,int pos2);
 6 void selectSort(int *p,int length);
 7 void print(int *p,int length);
 8 
 9 int main()
10 {
11     int p[] = {2,5,3,11,89,76,24,33,15};
12     selectSort(p,sizeof(p)/sizeof(int));
13     print(p,sizeof(p)/sizeof(int));
14     cout << "Hello world!" << endl;
15     return 0;
16 }
17 
18 void print(int *p,int length)
19 {
20     for(int i=0;i<length;i++)
21         cout << p[i] << endl;
22 }
23 
24 void selectSort(int *p,int length)
25 {
26     for(int i=0;i<length;i++)
27     {
28         int min = i;
29         for(int j=i+1;j<length;j++)
30         {
31             if(p[j]<p[min])
32             {
33                 min=j;
34             }
35             change(p,min,i);
36         }
37     }
38 }
39 
40 void change(int *p,int pos1,int pos2)
41 {
42     if(pos1 == pos2)
43     {
44         return;
45     }
46     int temp=p[pos1];
47     p[pos1] = p[pos2];
48     p[pos2] = temp;
49 } 

 

性能分析:

  1. 每个位置的元素都会进行一次交换,所以一共需要N次交换。
  2. 每个位置的元素都需要N-1-i次比较,所以一共需要 1+2+3+.....+ (N-2)+(N-1) 次比较。约等于 N*N/2次。

排序-选择排序

标签:pre   style   一个   重复   int   这一   过程   交换   比较   

原文地址:http://www.cnblogs.com/lucy-lizhi/p/7389091.html

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