代码如下:

#include<iostream>
using namespace std;void Bubble_Sort(int *a, int n)
{bool flag;int tmp = 0;for (int i = n - 1; i >= 0; i--){flag = false;for (int j = 0; j < i; j++){if (a[j] > a[j + 1]){swap(a[j], a[j + 1]);flag = true;}}if (!flag) break;}
}int partition(int *a, int low, int high)
{int point = a[low];while (low < high){while (low < high && a[high] >= point){high--;}swap(a[low], a[high]);while (low < high && a[low] <= point){low++;}swap(a[low], a[high]);}return low;
}void quicksort(int *a, int low, int high)
{if (low < high){int point = partition(a, low, high);quicksort(a, low, point - 1);quicksort(a, point + 1, high);}
}void Quick_Sort(int *a, int n)
{quicksort(a, 0, n - 1);
}void Insertion_Sort(int *a, int n)
{int tmp;int j;for (int i = 1; i < n; i++){tmp = a[i];for ( j = i; j > 0 && a[j - 1] > tmp; j--){a[j] = a[j - 1];}a[j] = tmp;}
}void Shell_Sort(int *a, int n)
{int tmp;int j;for (int d = n / 2; d > 0; d /= 2){for (int i = d; i < n; i++){tmp = a[i];for ( j = i; j >= d && a[j - d] > tmp; j -= d){a[j] = a[j - d];}a[j] = tmp;}}
}void merge(int *a, int mid, int low, int high)
{int i = low;int j = mid + 1;int k = 0;int *w = new int[high - low + 1];while (i <= mid && j <= high){if (a[i] < a[j]) w[k++] = a[i++];else w[k++] = a[j++];}while (i <= mid) w[k++] = a[i++];while (j <= high) w[k++] = a[j++];for (int i = low, j = 0; i <= high; i++, j++) a[i] = w[j];delete[] w;
}void mergesort(int *a, int low, int high)
{if (low < high){int mid = (low + high) >> 1;mergesort(a, low, mid);mergesort(a, mid + 1, high);merge(a, mid, low, high);}
}void Merge_Sort(int *a, int n)
{mergesort(a, 0, n - 1);}void Selection_Sort(int *a, int n)
{int min;for (int i = 0; i < n; i++){min = i;for (int j = i + 1; j < n; j++){if (a[j] < a[min])min = j;}if (min != i){swap(a[min], a[i]);}}
}void percDown(int *a,int p,int n)
{int parent, child;int x = a[p];for (parent = p; (parent * 2+1) < n; parent = child){child = 2 * parent+1;if (child != n-1 && a[child] < a[child + 1]){child++;}if (x >= a[child]) break;else a[parent] = a[child];}a[parent] = x;}void Heap_Sort(int *a, int n)
{for (int i = n / 2 - 1; i >= 0; i--){percDown(a, i, n);}for (int i = n - 1; i > 0; i--){swap(a[0], a[i]);percDown(a, 0, i);}
}void printElem(int *a,int n)
{for (int i = 0; i < n; i++){cout << a[i] << " ";}cout << endl;
}void updataElem(int *a, int *b,int n)
{for (int i = 0; i < n; i++){a[i] = b[i];}
}int main()
{int a[] = { 213,432,213,64,5,532,412,3,12412,312 };int b[] = { 213,432,213,64,5,532,412,3,12412,312 };Bubble_Sort(a, 10);//冒泡排序printElem(a,10);updataElem(a, b,10);Quick_Sort(a, 10);//快速排序printElem(a, 10);updataElem(a, b, 10);Insertion_Sort(a, 10);//插入排序printElem(a, 10);updataElem(a, b,10);Shell_Sort(a, 10);//普通希尔排序printElem(a, 10);updataElem(a, b, 10);Merge_Sort(a, 10);//归并排序printElem(a, 10);updataElem(a, b,10);Heap_Sort(a, 10);//堆排序printElem(a, 10);updataElem(a, b, 10);Selection_Sort(a, 10);//选择排序printElem(a, 10);return 0;
}

复杂度以及稳定性分析:

C++实现各种排序以及复杂度,稳定性分析相关推荐

  1. 数据结构-考研难点代码突破(C/C++/Java排序算法,性能及其稳定性分析(内部排序))

    文章目录 1. 内部排序的基本种类 2. 插入排序 Ⅰ直接插入排序 性能与稳定性分析 Ⅱ 折半插入排序 性能与稳定性分析 Ⅲ 希尔排序 性能与稳定性分析 3. 交换排序 Ⅰ 冒泡排序 性能与稳定性分析 ...

  2. 排序算法 | 堆排序,算法的图解、实现、复杂度和稳定性分析

    今天讲解一下堆排序的原理以及实现.复杂度和稳定性分析 目录 1 堆的定义 2 堆排序的思路 3 代码实现 4 堆的输出(删除操作) 5 堆的插入操作 6 堆排序的特点 7 性能分析 1 堆的定义 堆排 ...

  3. 排序算法 | 简单选择排序,算法的图解、实现、复杂度和稳定性分析

    今天讲解一下简单选择排序的原理以及实现.复杂度和稳定性分析 这个内容很简单,轻松加愉快,很快就过了~ 目录 简单选择排序 1 基本思想 2 动态图解 3 代码 4 复杂度分析 简单选择排序 1 基本思 ...

  4. 排序算法 | 快速排序,算法的图解、实现、复杂度和稳定性分析与优化

    今天讲解一下快速排序算法的原理以及实现.复杂度和稳定性分析与优化 目录 1 快速排序的原理 2 快速排序代码实现 3 复杂度和稳定性分析.优化 4 习题练习 1 快速排序的原理 快速排序是所有内部排序 ...

  5. 排序算法 | 直接插入排序算法的图解、实现、复杂度和稳定性分析

    排序算法 | 直接插入排序算法的图解.实现.复杂度和稳定性分析 目录 1.直接插入排序定义 2.直接插入排序,步骤说明 3.动态图演示 4.代码实现,运行结果 5.算法分析 ① 时间复杂度分析 ② 空 ...

  6. 排序算法 | 直接选择排序,算法的图解、实现、复杂度和稳定性分析

    排序算法 | 直接选择排序,算法的图解.实现.复杂度和稳定性分析 目录 1.直接选择排序的原理 2.图解直接选择排序 3.算法代码实现 4.算法复杂度分析.稳定性分析 直接选择排序 1.直接选择排序的 ...

  7. 排序算法 | 希尔shell排序,算法的图解、实现、复杂度和稳定性分析

    希尔shell排序 1.希尔排序--定义 2.希尔排序--步骤描述 3.希尔排序--算法实现 4.希尔排序--复杂度.稳定性分析 1.希尔排序--定义 希尔排序按其设计者希尔(Donald Shell ...

  8. C++ 十大经典排序算法原理及模板之STL方法实现以及稳定性分析

    写在前面: 1.本文中默认排序为升序,降序的原理类似. 2.如果程序直接复制到vs出现无法识别标记的问题,解决方法在这:vs无法识别标记的解决方法 3.本文的算法都是自己用stl实现的,疏漏之处还请指 ...

  9. 在遗传算法中出现等式约束_排序算法中的稳定性-等式的处理

    在遗传算法中出现等式约束 by Onel Harrison 通过Onel Harrison 排序算法中的稳定性-等式的处理 (Stability in Sorting Algorithms - A T ...

最新文章

  1. 简析Uber的可伸缩监控:uMonitor和Neris
  2. CSharpGL(22)实现顺序无关的半透明渲染(Order-Independent-Transparency)
  3. 【并发编程】线程池--Executor框架
  4. Elasticsearch 5.3.x 使用 Head 插件
  5. python关机linux_Python学习第157课——Linux切换用户、关机、查看正在运行的程序...
  6. 安卓dts音频解码_家庭影院三维音效技术应用之DTS:X摆位
  7. SpringBoot2.0系列(4)---SpringBoot之使用JPA完成简单的rest api
  8. 光纤传感器实验模块_实验3振动测量试验模块.doc
  9. 用原生javascript做的一个打地鼠的小游戏
  10. 在打包的时候,创建应用程序池,并自动将程序assign到新创建的池中(MSI制作)
  11. @程序员,区块链开发平台避坑指南!
  12. php intval和ceil,php取整函数ceil,floor,round,intval的区别
  13. 半岛电视台员工遭iOS iMessage app零点击0day 漏洞利用攻击
  14. 获取浏览器选中文本并操作
  15. Linux内核调用SPI平台级驱动_实现OLED的显示功能
  16. 三款 Mac 远程控制(远程桌面)工具
  17. html+上下标+遇乘号无效,html中的特殊符号
  18. DITHER 抖动算法
  19. 【SSL 1458】zzzyyds(DP)
  20. 充电指示灯控制中SELinux权限问题

热门文章

  1. C# RichTextBox 实现循环查找关键字
  2. 【数据库原理及应用】经典题库附答案(14章全)——第四章:关系系统及其优化
  3. C语言之去掉https链接的默认443端口
  4. Android之failed for task ‘:app:dexDebug‘致gradle编译OOM问题解决(android-support-multidex)
  5. 【python opencv 计算机视觉零基础到实战】二、 opencv文件格式与摄像头读取
  6. 怎么找到项目中所有同名的类_26岁转行程序员的成长历程--Day03从内存层面理解类和对象...
  7. python实验原理_Python实验报告八
  8. arcgis 分区 属性值_ArcGIS制图之Maplex自动点抽稀
  9. python随机抽取人名_python的random
  10. 如果在我爸的朋友圈当杠精,会挨揍吗?