[关闭]
@CrazyHenry 2018-03-07T14:56:32.000000Z 字数 725 阅读 1215

0.x 3.简单选择排序

dddd数据结构课本


image.png-153.9kB

思路:从待排序列每次找出最小值,与待排序列的第一个交换。
最开始:整个序列都是待排序列,找出最小值1,然后与第一个元素8交换。
image.png-138.6kB

第二轮找到最小值2,与6交换。
image.png-124.6kB

代码实现:

  1. #include <iostream>
  2. #include <algorithm>
  3. using namespace std;
  4. void selectionSort(int arr[], int n)//n表示传入的数据量
  5. {
  6. if(n <= 0) return;
  7. for(int i = 0; i != n - 1; ++i) //表示只需要n-1轮循环 //外循环只需循环n-1次,最后一个数据不需比较
  8. {
  9. //找到[i,n)区间的最小值索引minIndex
  10. int minIndex = i;
  11. for(int j = i + 1; j != n; ++j)
  12. {
  13. if(arr[j] < arr[minIndex])
  14. minIndex = j;
  15. }
  16. swap(arr[i], arr[minIndex]);//交换arr[i]与arr[minIndex]
  17. }
  18. }
  19. int main() {
  20. int a[10] = {10,9,8,7,6,5,4,3,2,1};
  21. selectionSort(a,10);
  22. for( int i = 0 ; i < 10 ; i ++ )
  23. cout<<a[i]<<ends;//ends表示刷新缓冲区,并附带一个空格" "
  24. cout<<endl;
  25. return 0;
  26. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注