博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c 排序 汇总
阅读量:4050 次
发布时间:2019-05-25

本文共 1918 字,大约阅读时间需要 6 分钟。

link网址为大神的图解分析,有助于理解各种排序算法。

/* * 所有排序均为升序排列 * 图解分析可参考:http://www.cnblogs.com/skywang12345/p/3603935.html */#include 
#include
#define LEN(array) (sizeof(array)/sizeof(array[0]))#define swap(a,b) (a^=b,b^=a,a^=b)/**打印数组元素**/void print_array(int arr[], int arr_length){ int i; for(i=0;i
arr[i+1]) { swap(arr[i], arr[i+1]); /*交换,大的往后移动*/ flag = 1; } } if(0 == flag){ break; } }}/**插入排序**link:http://www.cnblogs.com/fzhe/archive/2013/01/25/2871699.html****直接插入排序的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表。**开始时有序表中只包含1个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,**将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。****关键的两句话:1.元素拿出来;2.符合条件的后移**直接插入排序的时间复杂度是O(N2)。**直接插入排序是稳定的算法,它满足稳定算法的定义。**/void insert_sort(int arr[], int arr_length){ int i,j,temp; for(i=1;i
=0 && temp
=1) { for(i=gap;i
=0 && temp
=right) return; temp = arr[left]; //temp中存的就是基准数 i = left; j = right; while(i != j) { //先从右边开始找 第一个 小于temp的数 while(arr[j] >= temp && i
= a[l]) { break; // 调整结束 } else { a[c]=a[l]; a[l]=tmp; } }}//堆排序(小到大)void heap_sort(int arr[], int arr_length){ int i; // 从(n/2-1) --> 0逐次遍历。遍历之后,得到的数组实际上是一个(最大)二叉堆。 for(i=arr_length/2-1;i>=0;i--) { maxheap_down(arr,i,arr_length-1); } for(i=arr_length-1;i>0;i--) { swap(arr[0], arr[i]); // 交换a[0]和a[i]。交换后,a[i]是a[0...i]中最大的。 maxheap_down(arr,0,i-1); // 调整a[0...i-1],使得a[0...i-1]仍然是一个最大堆。 }}/**归并排序 **link:http://www.cnblogs.com/skywang12345/p/3602369.html **将待排序的数列分成若干个长度为1的子数列,然后将这些数列两两合并;得到若干个长度为2的有序数列, **再将这些数列两两合并;得到若干个长度为4的有序数列,再将它们两两合并;直接合并成一个数列为止。 **///2. 将一个数组中的两个相邻有序区间合并成一个(合)void Merge(int a[],int low,int mid,int high) { int *arr; int i,j,p; i = low; j = mid+1; p = 0; arr = (int *)malloc((high-low+1)*sizeof(int));//申请空间 临时存放数据 if(NULL == arr) { fprintf(stderr,"malloc fault"); } while(i<=mid && j<=high) { arr[p++] = (a[i]
你可能感兴趣的文章
var/let/const区别
查看>>
函数式柯里化的理解?
查看>>
时间戳转化为年月日时分秒
查看>>
配置ssh公钥
查看>>
git clone拉代码的时候出现permission denied 没有权限的问题解决
查看>>
前端-vue-文件上传(图片、word,ppt,pdf,excel,txt等文件流)
查看>>
word,PDF,excel、ppt等文件上传,视频上传查看等
查看>>
java 不用递归写tree
查看>>
springboot2 集成Hibernate JPA 用 声明式事物
查看>>
fhs-framework jetcache 缓存维护之自动清除缓存
查看>>
SpringBoot 动态编译 JAVA class 解决 jar in jar 的依赖问题
查看>>
fhs_framework springcloud使用统一的控制器来接收rpc调用请求教程,无需每个rpc接口都写控制器
查看>>
fhs-framework springboot mybatis 解决表关联查询问题的关键方案-翻译服务
查看>>
Springboot + easyui + mybatis 高级搜索功能实现
查看>>
k8s 踩坑笔记
查看>>
SpringCloud Seata Nacos 整合教程和坑
查看>>
nacos 本地覆盖远程 本地优先
查看>>
java 查询内存泄漏
查看>>
httpclient4.5 绕过ssl证书校验 -看别人文章解决不了的,看下我这个
查看>>
基于webpack的vue语法糖实现思路
查看>>