代码改变世界

常用排序之选择排序(c++)

2010-04-07 17:26  Phoenix'K  阅读(2532)  评论(0编辑  收藏  举报

  选择排序的原理还是比较简单的,在数组array[begin:end]中先选定一个数array[begin],再在余下的数中遍历,如果找到比array[begin]小的数,那么就将这个数作为选定的数,再往下遍历,如果还有更小的,那么继续换掉下标,直到找到最小的为止,然后将这个最小和数组第一个数array[0]交换,再在余下的数中找到最小的放在第二个位置array[1],  。。。

1 #include <iostream>
2  using namespace std;
3
4 void SelectSort(int *pData,int size)
5 {
6 for(int i = 0;i<size-1;++i)
7 {
8 int index = i;
9 for(int j = i+1;j<size;++j)
10 {
11 if(pData[j]<pData[index])
12 index = j;
13 }
14 if(index != i)
15 {
16 int temp = pData[i];
17 pData[i] = pData[index];
18 pData[index] = temp;
19 }
20 }
21 }
22
23 int main()
24 {
25 int pData[10]={1,5,9,3,4,7,8,2,6,10};
26 for(int i = 0;i<10;++i)
27 cout<<pData[i]<<' ';
28 cout<<endl;
29 SelectSort(pData,10);
30 for(int i = 0;i<10;++i)
31 cout<<pData[i]<<' ';
32
33 return 0;
34 }
35

 

选择排序,n*n的时间复杂度, 稳定排序,原地排序。选择排序就是冒泡的基本思想,从小的定位,一个一个选择,直到选择结束。他和插入排序是一个相反的过程,插入是确定一个元素的位置,而选择是确定这个位置的元素。