排序算法之快速排序(O (NlogN))

基本思想:每次将一个数temp作为基准,

然后从最右边往左找到一个比temp小的数,

然后再从左往右找到一个比temp大的数,

此时如果俩数没有相遇,就交换,若相遇,

就将相遇位置的数跟基准交换,然后采用二分法,分别递归左半边跟右半边


//快速排序

public class Algorithm{
static int []arr={1,3,2,5,7,3,8};
public static void main(String[] args) {

quickSort(0,arr.length-1);
for(int i:arr)
System.out.println(i);
}


private static void quickSort(int left, int right) {
if(left>right)
return ;
int temp=arr[left];//temp作为基准
int i=left;
int j=right;
while(i!=j){
//从右向左比较,找出比temp小的数
while(arr[j]>=temp&&i<j)
j--;
//从左往右找,找出比temp大的数
while(arr[i]<=temp&&i<j)
i++;
//左右各自找完之后,进行交换
if(i<j){
int t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
}
//让基数进行归位
arr[left]=arr[i];
arr[i]=temp;
quickSort(left,i-1);
quickSort(i+1,right);


}
}
全部评论

相关推荐

09-25 10:34
东北大学 Java
多面手的小八想要自然醒:所以读这么多年到头来成为时代车轮底下的一粒尘
点赞 评论 收藏
分享
ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务