数据结构几类排序的总结和完整代码 待续。。
2014-09-16 09:16
295 查看
一 插入排序
简单插入排序
希尔排序
二 快速排序
快排是冒泡排序的改进,每做一次排序可以确定一个数最终的位置p,同时把所有小于这个数的放在它左边,小于这个数的放在它后面。再递归地进行p左边部分和p右边部分的排序就可以了。
代码:
View Code
五 基数排序
简单插入排序
希尔排序
二 快速排序
快排是冒泡排序的改进,每做一次排序可以确定一个数最终的位置p,同时把所有小于这个数的放在它左边,小于这个数的放在它后面。再递归地进行p左边部分和p右边部分的排序就可以了。
代码:
#include<iostream> #include<cstdio> using namespace std; int a[100002],count1=0,n; int b[100002]; void Merge(int s,int t,int m) { int i,k,j; for(int i=s;i<=t;i++) b[i]=a[i]; //把s...t段的a 拷贝给b for(k=s,j=m+1,i=s;i<=m&&j<=t;k++) { if(b[i]<b[j]) a[k]=b[i++]; else a[k]=b[j++]; } while(i<=m) a[k++]=b[i++];// 剩下的b[i....m]复制到a中 while(j<=t) a[k++]=b[j++];// 剩下的b[j....t]复制到a中 } void Msort(int s,int t) { if(s<t) { int mid=(s+t)/2; Msort(s,mid); Msort(mid+1,t); Merge(s,t,mid);// 此时s..mid 和 mid+1..t段都是有序的了,再合并这两部分为一个有序的 } } void in() { printf("输入要排序列的个数:n\n"); scanf("%d",&n); printf("依次输入要排的n个数\n"); for(int i=0; i<n; i++) scanf("%d",&a[i]); } void out() { printf("\n结果:\n"); for(int i=0; i<n; i++) printf("%d ",a[i]); printf("\n"); } int main() { while(1) { in(); Msort(0,n-1); out(); } return 0; }
View Code
五 基数排序
相关文章推荐
- 数据结构的排序算法总结与分析(完整代码)
- 数据结构的排序算法总结与分析(完整代码)
- 存储过程分页 及其排序 完整代码 .net C#
- 数据结构中的各种排序---总结篇
- C++代码,数据结构-内部排序-交换排序-起泡排序
- 数据结构 - 直接插入排序(Straight Insertion Sort) 详解 及 代码(C++)
- C++代码,数据结构-内部排序-基数排序-链式基数排序
- ASP.NET2.0中GRIDVIEW控件完整代码实现模版列排序!
- js页面重定向跳转代码总结(待续)
- C++代码,数据结构-内部排序-插入排序-2-路插入排序
- C++代码,数据结构-内部排序-插入排序-直接插入排序
- 数据结构 - 2-路插入排序 详解 及 代码(C++)
- 数据结构学习系类列十六-排序总结篇
- 数据结构(二)排序总结
- Android JNI 使用的数据结构JNINativeMethod详解 ||建立Android SDK下的JNI、JAVA应用完整步骤---Android JAVA调用C++代码
- C++代码,数据结构-内部排序-插入排序-表插入排序
- More Effective C# 第21条、第22条 实例代码解析(可比较 可排序 自定义对象集合完整演示) IEquatable, IComparable,IEnumerable
- 数据结构面试之十二——排序3(排序算法归类、排序时间、空间复杂度、稳定性总结)
- 数据结构-线性表-静态链表完整可执行代码
- C++代码,数据结构-内部排序-选择排序-堆排序