数据结构排序1
来源:互联网 发布:linux修改hosts文件 编辑:程序博客网 时间:2024/06/07 05:24
void swap(int a[],int i,int j){int tmp = a[i];a[i] = a[j];a[j] = tmp;}void printfA(int a[],int len){int i;for(i = 0;i < len;i++){printf("%4d",a[i]);}printf("\n");}
1、冒泡排序
冒泡排序算法的运作如下:(从后往前)
1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3、针对所有的元素重复以上的步骤,除了最后一个。
4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
//冒泡排序int main(){int a[10] = {9,8,7,6,5,4,3,2,1,0};int len = sizeof(a) / sizeof(a[0]);int i,j;for(i = 0;i < len - 1;i++ ){for(j = 0;j < len - i - 1;j++){if(a[j] > a[j + 1])swap(a,j,j + 1);}}printfA(a,len); return 0;}
2、鸡尾酒排序
//鸡尾酒排序int main(){int a[10] = {9,6,1,3,5,8,4,0,2,7};int len = sizeof(a) / sizeof(a[0]);int i;int left = 0;int right = len - 1;while(left < right){for(i = left;i < right;i++){if(a[i] > a[i + 1])swap(a,i,i + 1);}right--;for(i = right;i > left;i--){if(a[i - 1] > a[i])swap(a,i - 1,i);}left++;}printfA(a,len); return 0;}
3、选择排序
//选择排序int main(){int a[10] = {9,8,7,6,5,4,3,2,1,0};int len = sizeof(a) / sizeof(a[0]);int i,j;for(i = 0;i < len - 1;i++ ){int min = i;for(j = i + 1;j < len;j++){if(a[min] > a[j])min = j;}if(min != i)swap(a,min,i);}printfA(a,len); return 0;}
4、插入排序
int main(){int a[10] = {9,8,7,6,5,4,3,2,1,0};int len = sizeof(a) / sizeof(a[0]);int i,j;int get;for(i = 1;i < len;i++ ){get = a[i];j = i - 1;while(j >= 0 && a[j] > get){a[j + 1] = a[j];j--;}a[j + 1] = get;}printfA(a,len); return 0;}
5、插入排序:二分法查找
//插入排序:二分法查找int main(){int a[10] = {9,8,7,6,5,4,3,2,1,0};int len = sizeof(a) / sizeof(a[0]);int i,j,left,right,get,mid;for(i = 1;i < len;i++ ){get = a[i];left = 0;right = i - 1;while(left <= right){mid = (left + right) / 2;if(a[mid] > get)right = mid - 1;elseleft = mid + 1;}for(j = i - 1;j >= left;j--)a[j + 1] = a[j];a[left] = get;}printfA(a,len); return 0;}
6、希尔排序
//希尔排序int main(){int a[10] = {9,8,7,6,5,4,3,2,1,0};int len = sizeof(a) / sizeof(a[0]);int i,j;int get;int d = len;do{d = d / 3 + 1;for(i = d;i < len;i++ ){get = a[i];j = i - d;while(j >= 0 && a[j] > get){a[j + d] = a[j];j -= d;}a[j + d] = get;}}while(d > 1);printfA(a,len); return 0;}
阅读全文
0 0
- 数据结构 排序1 交换排序
- 堆排序--数据结构排序1
- 数据结构 排序 希尔排序(1)
- 数据结构------排序(1)
- 数据结构1:排序
- 数据结构8-排序1
- 数据结构排序1
- 数据结构-排序算法1
- 数据结构 排序 基数排序(1)
- 数据结构 排序3.1 堆排序应用1
- 数据结构算法----排序(1)----插入排序
- 【数据结构之排序1】排序的基本概念
- 数据结构 排序 直接插入排序(1)
- 数据结构之排序总结1
- 数据结构之排序(1)
- 数据结构-排序
- 数据结构----排序
- 数据结构 - 排序
- Android中BitmapFactory.Options详解
- 华为OJ——将真分数分解为埃及分数
- eclipse--maven项目没有自动编译的问题
- UESTC
- 【Linux】top命令详解——进程管理器
- 数据结构排序1
- Python
- LintCode之最长回文子串
- AngularJs 中 $routeProvider 与 $stateProvider 的区别
- __declspec(dllexport)和__declspec(dllimport)、.def
- mysql sql 根据父级id查询书所有的子孙级数据,或根据子级id查询对应的父级
- 基于单幅图像的快速去雾算法实现
- 线程死锁问题
- Python中的*args和**kwargs的用法