排序总结
来源:互联网 发布:客户无忧软件下载 编辑:程序博客网 时间:2024/05/16 07:40
http://blog.csdn.net/fangpinlei
排序
插入排序
void insert_sort(int a[],int len){ for(int i=0;i<len;++i){ int tmp=a[i],j=i-1; for(;j>=0 && a[j]>tmp;--j){ a[j+1]=a[j]; } a[j+1]=tmp; }}
快速排序
void quick_sort(int a[],int low,int high){ if(low>=high) return; int i=low,j=high; int tmp=a[i]; while(i<j){ while(i<j && a[j]>=tmp) --j; a[i++]=a[j]; while(i<j && a[i]<=tmp) ++i; a[j--]=a[i]; } a[i]=tmp; quick_sort(a,low,i-1); quick_sort(a,i+1,high);}
堆排序
void adjustHeap(int a[],int s,int e){ int i=s,j=s*2; while(j<=e){ if(j<=e && a[j]<a[j+1]) ++j; if(a[j]>a[i]){ swap(a[j],a[i]); i=j; j<<=1; } else break; }}void heapSort(int a[],int len){ for(int i=(len-2)/2;i>=0;--i){ adjustHeap(a,i,len-1); } for(int i=len-1;i>0;--i){ swap(a[i],a[0]); adjustHeap(a,0,i-1); }}
归并排序
void merge(int *a,int *b,int n,int m){ int i=0,j=0; int *c= (int *)malloc((n+m)*sizeof(int)); for(int k=0;k<n+m;++k){ if(i<n && a[i]<b[j]){ c[k]=a[i++]; } else if(j<m && a[i]>=b[j]){ c[k]=b[j++]; } } memcpy(a,c,(n+m)*sizeof(int)); free(c);}void merge_sort(int *a,int low,int high){ if(low>=high) return; int m=(low+high)>>1; merge_sort(a,low,m); merge_sort(a,m+1,high); merge(a+low,a+m+1,m-low+1,high-m);}
0 0
- 排序总结
- 排序总结
- 排序总结
- 排序总结
- 排序总结
- 排序总结
- 排序总结
- 排序总结
- 排序总结
- 排序总结
- 排序总结
- 排序总结
- 排序 -- 总结
- 排序总结
- 排序总结
- 排序总结
- 排序总结
- 排序总结
- 获取url参数
- INSISLINK-M1571核心板/MTK平台
- malloc、calloc、realoc申请堆内存
- iOS动画学习笔记2 Video Tutorial iOS Animation with Swift - Ray Wenderlich
- 【复习】servlet之HttpServletResponse
- 排序总结
- HDU1078FatMouse and Cheese
- Error:Cause: com.android.sdklib.repository.FullRevision
- JAVA之旅(十七)——StringBuffer的概述,存储,删除,获取,修改,反转,将缓存区的数据存储到数组中,StringBuilder
- 产品经理必备成长修炼秘籍(深度解析)
- 贪心算法
- NYOJ疯牛【二分】
- 使用PlayCanvas制作一个简单的小游戏(四)
- 字符串