选择排序的过程如下:
- 假设第1个元素为最小元素。
- 从第2个元素开始,依次遍历数组每个元素并和第一个元素比较,如果比第一个元素小,则置换位置,这一轮遍历下来,会找出最小元素并放在第1个位置上。
- 重复第一步,假设第2个元素为次小的元素,并执行第二步,从第3个元素开始遍历。
用代码写出来结果就是:
1 #include2 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
性能分析:
- 每个位置的元素都会进行一次交换,所以一共需要N次交换。
- 每个位置的元素都需要N-1-i次比较,所以一共需要 1+2+3+.....+ (N-2)+(N-1) 次比较。约等于 N*N/2次。