数据结构与算法-排序总结
来源:互联网 发布:h3c端口聚合interface 编辑:程序博客网 时间:2024/05/16 08:00
这里讨论常用的内部排序
1.直接插入排序:时间复杂度O(n^2)
void insertSort(int *a, int size){ int i = 0; for(int i = 1; i < size; i++) { if(a[i] < a[i-1]) { int x = a[i]; int j = i; while(x < a[j-1] && j >= 1) { a[j] = a[j-1]; j--; } a[j] = x; } }}
2.希尔排序(最小增量排序):时间复杂度
void shellSort(int *a, int size){ int d = 0, i = 0; for(d = size/2; d > 0; d = d/2) { for(i = d; i < size; i++) { if(a[i] < a[i-d]) { int x = a[i]; int j = i; while(j >= d && x < a[j-d]) { a[j] = a[j-d]; j = j - d; } a[j] = x; } } }}3.冒泡排序,时间复杂度:O(n^2)
void bubbleSort(int *a, int size){ int i = 0,j = 0,temp = 0; int flag = 0; for(j = 0; j < size ;j++) { flag = 0; for(i = size - 1; i > j; i--) { if(a[i] < a[i-1]) { flag = 1; temp = a[i-1]; a[i-1] = a[i]; a[i] = temp; } } if(flag == 0) { return; } }}4.快速排序,时间复杂度:O(nlogn)
void QuickSort(int *a, int size){ QSort(a,0,size-1);}void QSort(int *a, int low, int high){ int pivotkey = a[low]; int highRecord = high; while(low < high) { while(low < high && pivotkey < a[high]) high--; a[low] = a[high]; while(low < high && pivotkey > a[low]) low++; a[high] = a[low]; } a[low] = pivotkey; if(low-1 <= 0 || low+1 >= highRecord) return; QSort(a,0,low-1); QSort(a,low+1,highRecord);}5.简单选择排序:时间复杂度O(n^2)
void SelectSort(int *a,int size)
{
int i = 0, j =0, temp = 0, pos =0;
for(j = 0; j < size; j++)
{
temp = a[j];
pos = j;
for(i = j+1; i < size; i++)
{
if(a[i] < temp)
{
temp = a[i];
pos = i;
}
}
if(pos != j)
{
temp = a[j];
a[j] = a[pos];
a[pos] = temp;
}
}
}
阅读全文
0 0
- 【数据结构与算法】【排序】总结
- 数据结构与算法-排序总结
- 《数据结构与算法分析》排序算法总结
- 【数据结构与算法】-常见排序算法总结
- 【数据结构与算法】【排序算法】排序算法总结
- 数据结构与算法之七大排序总结
- 算法与数据结构-常用排序算法总结1-比较排序
- 算法与数据结构-常用排序算法总结2-计数排序
- 算法与数据结构-常用排序算法总结2-桶排序
- 数据结构排序算法总结
- 数据结构排序算法总结
- 数据结构排序算法总结
- 数据结构排序算法总结
- 数据结构排序算法总结
- 数据结构:排序算法总结
- 【数据结构】排序算法总结
- 数据结构排序算法总结
- 数据结构:排序算法总结
- PBR基本理论
- Centos7 快速安装 MariaDB5.5
- centOS7下安装MAVEN
- repo init报错error.GitError: manifests rev-list (u'^2736dfd46e8a30cf59a9cd6e93d9e56e87021f2a', 'HEAD',
- Android初级开发(六)——3、SQLite数据库的增删改查
- 数据结构与算法-排序总结
- overflow:auto;父容器高度自适应问题
- 编写程序实现文件的分布式存储
- Redis学习(二)redis配置
- EL表达式处理字符串 是否 包含 某字符串 截取 拆分...............
- solidThinking.Click2Form.2017.1.0.Win64 1DVD
- C#中的委托与事件
- Android 获取控件的宽和高
- PTA 3.11表达式转换