关注
import java.util.Scanner;
public class Solution {
/**
* @param args
*/
static int sum = 0;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
int n = in.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = in.nextInt();
}
int lo = 0;
int hi = n - 1;
quick(arr, lo, hi);
System.out.println(sum);
}
}
public static void quick(int[] arr, int lo, int hi) {
if (hi <= lo) {
return;
}
int lt = lo;
int i = lo + 1;
int gt = hi;
int tmp = arr[lo];
while (i <= gt) {
if (arr[i] < tmp) {
swap(arr, lt++, i++);
} else if (arr[i] > tmp) {
swap(arr, i, gt--);
} else {
i++;
}
}
quick(arr, lo, lt - 1);
quick(arr, gt + 1, hi);
}
public static void swap(int[] a, int i, int j) {
if (a[i] != a[j])
sum++;
int tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
} 三向切分快排,不知道好不好使
查看原帖
点赞 评论
相关推荐
牛客热帖
正在热议
# 牛客帮帮团来啦!有问必答 #
667915次浏览 11089人参与
# 无实习如何秋招上岸 #
215498次浏览 3369人参与
# 如何写一份好简历 #
253743次浏览 3842人参与
# 2022届毕业生现状 #
313556次浏览 4386人参与
# Offer比较,你最看重什么? #
48708次浏览 476人参与
# 毕业后不工作的日子里我在做什么 #
50910次浏览 682人参与
# 租房前辈的忠告 #
31386次浏览 2038人参与
# 你的简历改到第几版了 #
296688次浏览 4484人参与
# 你会选择考研还是直接就业 #
73827次浏览 841人参与
# 硬件人的简历怎么写 #
76571次浏览 777人参与
# 华为开奖那些事 #
696066次浏览 5977人参与
# 简历中的项目经历要怎么写 #
423626次浏览 7215人参与
# 我的成功项目解析 #
80342次浏览 2346人参与
# 秋招开了,你想投哪些公司呢 #
115415次浏览 3234人参与
# 找工作中的意难平 #
184819次浏览 3346人参与
# 本周投递记录 #
194606次浏览 5021人参与
# 我想象的工作vs实际工作 #
90485次浏览 1527人参与
# 五一之后,实习真的很难找吗? #
17654次浏览 111人参与
# 如何一边实习一边秋招 #
244644次浏览 4587人参与
# 你投了多少份简历,才拿到offer? #
5513次浏览 60人参与