• 数据结构--七大排序算法(更新ing)


            下面算法编写的均是按照由小到大排序版本


    选择排序

    思想:

            每次遍历待排序元素的最大下标,与待排序元素中最后一个元素交换位置(此时需要设置一个临时变量来存放下标)

            时间复杂度--O(n^2)

            空间复杂度--O(1)

            稳定性--不稳定

    代码实现

    1. #include
    2. using namespace std;
    3. const int N = 1e2 + 10;
    4. int num[N];
    5. int n;
    6. void select_sort()
    7. {
    8. for (int i = 1; i < n; i++)//控制找最大值的次数
    9. {
    10. int index = 1;//存待排序元素的最小元素的下标
    11. for (int j = 1; j <= n - i; j++)
    12. {
    13. if (num[index] < num[j])
    14. index = j;
    15. }
    16. swap(num[index],num[n-i]);
    17. }
    18. }
    19. int main()
    20. {
    21. cin >> n;
    22. for (int i = 1; i <= n; i++)
    23. {
    24. cin >> num[i];
    25. }
    26. select_sort();
    27. for (int i = 1; i <= n; i++) cout << num[i] << " " << endl;
    28. }

    冒泡排序 

    思想:

            相邻两个元素比较,前一个比后一个大则交换

    (每遍历一次都会冒出最大值 每次遍历最后一个一定是最大的)

            时间复杂度--O(n^2)  (逆序时达到O(n^2))

            空间复杂度O(--1)

            稳定性--稳定

    优化:

            当整个数组遍历过程中没有发生交换,说明待排序数组已经有序,直接结束排序过程(bool类型变量做标记)

    代码实现

    1. #include
    2. using namespace std;
    3. const int N = 1e2 + 10;
    4. int num[N];
    5. int n;
    6. void bubble_sort()
    7. {
    8. for (int i = 1; i < n; i++)
    9. {
    10. bool flag = false;
    11. for (int j = 1; j <= n - i; j++)
    12. {
    13. if (num[j] > num[j + 1])
    14. {
    15. swap(num[j], num[j + 1]);
    16. flag = true;
    17. }
    18. }
    19. if (!flag) break;
    20. }
    21. }
    22. int main()
    23. {
    24. cin >> n;
    25. for (int i = 1; i <= n; i++)
    26. {
    27. cin >> num[i];
    28. }
    29. bubble_sort();
    30. for (int i = 1; i <= n; i++)
    31. {
    32. cout << num[i] << " ";
    33. }
    34. return 0;
    35. }

  • 相关阅读:
    RabbitMQ之消息模式简单易懂,超详细分享~~~
    【多线程】深入剖析线程池的应用
    Howler.js HTML5声音引擎
    中国石油大学(北京)-《油藏工程》第一阶段在线作业
    竞赛选题 深度学习 opencv python 公式识别(图像识别 机器视觉)
    Oracle DBlink使用方法
    leetcode:188. 买卖股票的最佳时机IV
    b 树和 b+树的理解
    异步函数(async/await)
    C++面试题(期)-数据库(二)
  • 原文地址:https://blog.csdn.net/m0_68987050/article/details/136759295