经典排序算法
来源:互联网 发布:华硕超频软件 编辑:程序博客网 时间:2024/05/01 00:04
#include<iostream>#include<cmath>using namespace std;/*排序1*/void bubblesort(int data[], int len)//O(n^2){ for (int i = 0; i < len; ++i) { for (int j = i + 1; j < len; ++j) { if (data[i]>data[j]) { int temp = data[i]; data[i] = data[j]; data[j] = temp; } } }}void choosesort(int data[], int len)//O(n^2){ int temp,min; for (int i = 0; i < len; ++i) { min = i; for (int j = i+1; j < len; ++j) { if (data[j] < data[min]) min = j; } temp = data[i]; data[i] = data[min]; data[min] = temp; }}void insertsort(int data[], int len)//O(n^2){ int temp, j; for (int i = 1; i < len; ++i) { int temp = data[i]; for (j = i - 1; j >= 0 && data[j] > temp; --j) data[j + 1] = data[j]; data[j + 1] = temp; }}void merge(int *l1, int *l2, int l1size, int l2size){ int temp[100]; int i=0, j=0,k=0; while (i < l1size&&j < l2size) { if (l1[i] < l2[j]) temp[k++] = l1[i++]; if (l2[j] <= l1[i]) temp[k++] = l2[j++]; } while (i < l1size) temp[k++] = l1[i++]; while (j < l2size) temp[k++] = l2[j++]; for (int m = 0; m < k; ++m) { l1[m] = temp[m]; }}void mergesort(int data[], int len)//O(nlogn){ if (len > 1) { int *l1 = data; int l1size = len / 2; int *l2 = data + len / 2; int l2size = len - l1size; mergesort(l1, l1size); mergesort(l2, l2size); merge(l1, l2, l1size, l2size); }}void quicksort(int s[], int l, int r)//O(nlogn){ if (l < r) { int i = l, j = r, t = s[l]; while (i < j) { while (i<j&&s[j]>t) --j; if (i < j) s[i++] = s[j]; while (i < j&&s[i] < t) ++i; if (i < j) s[j--] = s[i]; } s[i] = t; quicksort(s,l, i - 1); quicksort(s, i + 1, r); }}void shellsort(int data[], int len, int step)//时间复杂度依靠步长{ if (step > 1) { for (int i = step; i < len; ++i) { int index = i; while (index-step>=0&&data[index-step]>data[index]) { int temp = data[index]; data[index] = data[index - step]; data[index - step] = temp; index -= step; } } shellsort(data, len, step - 1); }}int main(){ int a[10] = { 23, 45, 76, 8, 2, 31, 5, 77, 8, 3 }; //bubblesort(a, 10); //choosesort(a, 10); //insertsort(a, 10); //mergesort(a, 10); //quicksort(a, 0, 9); shellsort(a, 10,5); for (int i = 0; i < 10; ++i) cout << a[i] << endl; system("pause"); return 0;}
0 0
- 经典排序算法
- 【经典算法】快速排序
- 【经典算法】堆排序
- 经典排序算法集合
- zz 经典排序算法
- JAVA经典排序算法
- 冒泡---经典排序算法
- 经典排序算法
- 常见经典排序算法
- 经典排序算法
- 经典算法:快速排序
- 经典排序算法
- 经典算法---冒泡排序
- 常见经典排序算法
- [经典排序算法][集锦]
- [经典排序算法][集锦]
- 经典排序算法
- [经典排序算法][集锦]
- 算法基础_8大经典排序算法实现回顾
- 加密解密
- git改变历史
- [蓝桥杯官网测试题] 入门训练
- Q91:真实地模拟透明材质(Realistic Transparency)
- 经典排序算法
- Codeforces 599C Day at the Beach【思维+优先队列】
- js基础10-应用案例
- 替罪羊树 板子
- C++编译与链接
- linux进入一个目录以及在目录中创建文件所需要的权限
- 单例模式
- spring-data-jpa更新实体
- C3p0数据库连接池的使用