[关闭]
@CrazyHenry 2018-03-07T14:53:22.000000Z 字数 706 阅读 1102

0.x 4.直接插入排序

dddd数据结构课本


改进版:减少交换操作

  1. #include <iostream>
  2. #include <algorithm>
  3. #include "SortTestHelper.h"
  4. #include "SelectionSort.h"
  5. using namespace std;
  6. void insertionSort(int arr[], int n)
  7. {
  8. if(n <= 0) return; //一定要考虑到这种情况
  9. for(int i = 1; i != n; ++i)
  10. {
  11. int temp = arr[i];
  12. int j = i;
  13. for(; j != 0 && temp < arr[j - 1]; --j)
  14. //temp<arr[j-1]这个条件可以提前终止循环,当arr[j-1]<=temp,此时这个j的位置就是arr[i]应该插入的位置;或者j=0,这时所有元素都移到j>0的位置,则直接在j=0的位置插入arr[i]
  15. {
  16. arr[j] = arr[j - 1];
  17. }
  18. arr[j] = temp;
  19. }
  20. }
  21. int main() {
  22. int a[10] = {10,9,8,7,6,5,4,3,2,1};
  23. insertionSort(a,10);
  24. for( int i = 0 ; i < 10 ; i ++ )
  25. cout<<a[i]<<ends;//ends表示刷新缓冲区,并附带一个空格" "
  26. cout<<endl;
  27. return 0;
  28. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注