复习数据结构:排序(一)——插入排序

╰+哭是因爲堅強的太久メ 2022-08-07 01:52 205阅读 0赞

从这一篇开始,我开始复习数据结构的知识点,博文主要偏重于每个知识点的核心思想,以及代码实现。这一篇先从排序算法中的插入排序开始。

稳定排序、内排序、适合少量数据量的排序。
当输入数组已经排好序时,插入排序需要O(n),快排需要O(n^2)。
当输入数组倒序排列时,插入排序时复为:O(n^2)。
平均时间复杂度:O(n^2)。

插入排序的基本做法是:将一个数插入到一个已经排列好的数组中,通过移动这个数的位置,使得插入之后的数组也是有序的,不断重复这个过程,使得最终所有的数都是有序的。

实现代码如下:

  1. #include<iostream>
  2. using namespace std;
  3. void InsertSort(int a[], int n)
  4. {
  5. for(int i = 1; i < n; i++)
  6. {
  7. if(a[i] < a[i-1]) // a[i]是待排元素,前面i-1个数已经排序好
  8. {
  9. int j = i-1; // 准备前移
  10. int x = a[i];
  11. a[i] = a[i-1];
  12. while(x < a[j])
  13. {
  14. a[j+1] = a[j];
  15. j--;
  16. }
  17. a[j+1] = x;
  18. }
  19. }
  20. }
  21. int main()
  22. {
  23. int a[] = {2, 1, 5, 8, 4, 3};
  24. InsertSort(a, 6);
  25. for(int i = 0; i< 6; i++)
  26. cout<<a[i]<<' ';
  27. cout<<endl;
  28. return 0;
  29. }

发表评论

表情:
评论列表 (有 0 条评论,205人围观)

还没有评论,来说两句吧...

相关阅读

    相关 数据结构--插入排序

    算法中经常会用到各种各样的算法,比较简答的思想就是冒泡排序,一般刚开始编程时遇到排序问题时,会很容易想到冒泡排,冒泡排序是通过两辆比较数值,从而将数字移动到开始或者末尾的位置,

    相关 数据结构插入排序

    插入排序的基本思想是:每步将一个待排序的对象,按其关键字大小,插入到前面已经排好序的一组对象的适当位置上,直到对象全部插入为止。 简言之,边插入边排序,保证子序列中随时都是排