求乱序数组中按递增排列的第k个数

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		int[] a = new int[n];
		for (int i = 0; i < n; i++)
			a[i] = scan.nextInt();
		int k = scan.nextInt();
		sort(a, 0, a.length - 1);
		System.out.println(a[k -1]);
	}

	private static void sort(int[] a, int i, int j) {
		if (i < j) {
			int left = i;
			int right = j;
			int temp = a[left];
			while (left < right && temp < a[right])
				right--;
			if (right > left)
				a[left] = a[right];
			while (left < right && a[left] < temp)
				left++;
			if (right > left)
				a[right] = a[left];
			a[left] = temp;
			int pivot = left;
			sort(a, i, pivot - 1);
			sort(a, pivot + 1, j);
		}

	}
}

猜你喜欢

转载自blog.csdn.net/weixin_42565135/article/details/88408215
今日推荐