十大排序算法
排序算法C++
pengchenxin
这个作者很懒,什么都没留下…
展开
-
归并排序。
归并排序归并排序(mergeSort)是建立在归并操作上的一种有效的排序算法,该算法采用分治法。将以有序的子序列合并,得到一个完全有序的序列,即:先使得每个子序列有序,再使得子序列段间有序。如果将两个有序表合成一个有序表,称为:二路归并。#include<iostream>using namespace std;void merge(int a[], int l, int mid, int r){ int b[100]; int i = l, j = 0, k = mid; wh原创 2021-05-22 14:37:13 · 79 阅读 · 0 评论 -
快速排序法
快速排序法1. 算法步骤从数列中挑出一个元素,称为 “基准”(pivot);重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区操作;递归地把小于基准值元素的子数列和大于基准值元素的子数列排序;#include<iostream>using namespace std;int partion(int a[],int m, int n){ int key = m;原创 2021-05-22 11:19:56 · 55 阅读 · 0 评论 -
希尔排序
希尔排序1. 算法步骤选择一个增量序列,很明显我们可以用一个序列来表示增量:{n/2,(n/2)/2…1},每次增量都/2按增量序列个数 k,对序列进行 k 趟排序;每趟排序,根据对应的增量 step,将待排序列分割成若干长度为 m 的子序列,分别对各子表进行直接插入排序。仅增量因子为 1 时,整个序列作为一个表来处理,表长度即为整个序列的长度。#include<iostream>using namespace std;int main(){ int a[10]; int n原创 2021-05-22 11:08:18 · 83 阅读 · 0 评论 -
插入排序法
插入排序法1. 算法步骤将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)2.时间复杂度分析最好情况是需要排序的序列基本有序,序列是递增的。这样的时间复杂度是O(n),最坏的情况是序列是递减的。这样的时间复杂度是O(n^2)#include<iostream>using namespace s原创 2021-05-22 10:16:57 · 139 阅读 · 0 评论 -
选择排序法
选择排序法1. 算法步骤首先在未排序序列中找到最小(大)元素,存放到未排序序列的末位置。重复第一步,直到所有元素均排序完毕。#include<iostream>using namespace std;int main(){ int a[10]; int n; int max,maxindex=0; cin >> n; for (int i = 0; i < n; i++) cin >> a[i]; // 61 17 29 22 34原创 2021-05-22 09:42:59 · 59 阅读 · 0 评论 -
冒泡排序法
冒泡排序法1. 算法步骤比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。#include<iostream>using namespace std;int main(){ int a[10]; int n; int temp; cin >> n;原创 2021-05-22 09:19:10 · 64 阅读 · 0 评论