简单排序 整理

package com.day

import java.util.Arrays;

public class SortDemo {
public static void main(String[] args) {
int[] ary=new int[]{8,2,3,7,1,5};
// selSort(ary);
//inSort(ary);
qu(ary,0,ary.length-1);
System.out.println(Arrays.toString(ary));
}
public static void selSort(int[] ary){//选择排序
for(int i=0;i<ary.length-1;i++){//n-1轮结束
//j是i后面的数
for(int j=i+1;j<ary.length;j++){
if(ary[i]>ary[j]){//i是左,j是右 让小的在左边
int t=ary[i];
ary[i]=ary[j];
ary[j]=t;
}
}
}
}
public static void inSort(int[] ary){//插入
//双重循环
int j=0;//j左边数组
for(int i=1;i<ary.length;i++){//i右边数组
int t=ary[i];//把i按序取出来
for(j=i-1;j>=0;j–){//j左边数组,t要和j每个元素比
if(t<ary[j]){//i要去左边
ary[j+1]=ary[j];
ary[j]=t;
}
}
}
}
//快速排序,取中间数,最左边,最右边
//ary 0 5
public static int getM(int[] ary,int low,int hi){
int t=ary[low];//从左边开始,第一个数为标杆
while(low<hi){//保证循环在范围内,从二边走
while(low<hi && ary[hi]>=t){//右边的数要比标杆大
//不用做操作,右边的下标再走一个
hi–;
}
//如果比标杆小的,把右边的,给左边
ary[low]=ary[hi];
//同时要看左边,左边比标杆小的,不用管,光标走一个
while(low<hi && ary[low]<t){
low++;
}
//如果有比标杆大的
ary[hi]=ary[low];
}
ary[low]=t;
//System.out.println(low);
return low;//每一回都要得到标杆,并标杆是low的位置
}
//反复调用
public static void qu(int[] ary,int low,int hi){
if(low<hi){
int m=getM(ary,low,hi);//中间数的下标
qu(ary,low,m-1);//
qu(ary,m+1,hi);
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值