排序算法
来源:互联网 发布:淘宝类目007是什么牌子 编辑:程序博客网 时间:2024/05/01 15:17
八大排序对比
1直接插入排序,拿当前要排序的数字key与前面排好序的数字做对比,如果对比的的数字比key大,则把对比的数字往后移,如果前面的数字比key小,则把key插入对比的数字的后面
public void sort(int[] sortNum) {int key;
for(int i=1;i<sortNum.length;i++){
key=sortNum[i];
int j=i-1;
while(j>=0&&(sortNum[j])>key){
sortNum[j+1]=sortNum[j];
j--;
}
sortNum[j+1]=key;
}
}
2.冒泡排序
每一轮从后往前把最小的浮出水面
public void sort(int[] sortNum) {
int temp;
for(int i=0;i<sortNum.length;i++){
for(int j=sortNum.length-1;j>i;j--){
if(sortNum[j]<sortNum[j-1]){
temp=sortNum[j];
sortNum[j]=sortNum[j-1];
sortNum[j-1]=temp;
}
}
}
}
3.快速排序
前后两个指针慢慢往中间移动
public void sort(int[] sortNum) {
sort(sortNum,0,sortNum.length-1);
}
private void sort(int[] sortNum,int low,int hight){
if(low<hight){
int middle=quickSort(sortNum,0,sortNum.length-1);
sort(sortNum,low,middle-1);
sort(sortNum,middle+1,hight);
}
}
private int quickSort(int[] sortNum,int low,int hight){
int key=sortNum[low];
while(low<hight){
while(low<hight&&sortNum[hight]>key){
hight--;
}
sortNum[low]=sortNum[hight];
while(low<hight&&sortNum[low]<key){
low++;
}
sortNum[hight]=sortNum[low];
}
sortNum[low]=key;
return low;
}
4.希尔排序
把相隔d的数据组成一个子序列,子序列用插入排序排好顺序,在把距离d缩短,再把子序列排序,直到d=1
public void sort(int[] sortNum) {
int length=sortNum.length;
if(length<=0){
return;
}
int d=length/2;
while(d>=1){
for(int i=0;i<d;i++){
for(int j=d;j<length;j++){
int key=sortNum[j];
int k=j;
while(k>=d&&key<sortNum[k-d]){
sortNum[k]=sortNum[k-d];
k-=d;
}
sortNum[k]=key;
}
}
d=d/2;
}
}
5.选择排序
从序列中找出第一小的排在第一位,然后找出第二小的排在第二位,以此类推
public void sort(int[] sortNum) {
int temp;
for(int i=0;i<sortNum.length;i++){
int minIndex=i;
for(int j=i+1;j<sortNum.length;j++){
if(sortNum[minIndex]>sortNum[j]){
minIndex=j;
}
}
if(i!=minIndex){
temp=sortNum[i];
sortNum[i]=sortNum[minIndex];
sortNum[minIndex]=temp;
}
}
}
6.堆排序
略
7.归并排序
略
8.基数排序
非比较排序
略
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- C++11系列学习之七---------初始化列表
- Android 四大组件之一:Service 后台运行
- 使用udp协议给飞Q发送消息
- 第一页,现在的自己写给未来的我。
- Html学习笔记3
- 排序算法
- JDK升级导致TLS证书认证失败
- 非阻塞的AlertDialog的代码实现
- Leet Code 6 ZigZag Conversion
- Redis--aof备份恢复
- POJ 1731:Orders next_permutation
- 从零开始编写图片加载库(五)之图片缓存DiskCache
- 图解测试之稳定性-如何开始稳定性测试
- C++枚举类型