您的位置:首页 > 编程语言 > Java开发

java简单排序:选择排序,冒泡排序,插入排序

2017-01-15 15:31 393 查看
import java.util.Arrays;

import java.util.Scanner;

/**

* 一组N个数,要确定其中第k个最大值

* ——选择问题

*/

public class Sort {

private static int fun(int[] arr, int k) {

//将这N个数放到一个数组中,通过排序算法找出第k个大的数
//使用冒泡排序
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
arr[j] = arr[j + 1] ^ arr[j];//通过a^b^b = a 的特性
arr[j + 1] = arr[j + 1] ^ arr[j];
arr[j] = arr[j] ^ arr[j + 1];
}
}
}

//使用选择排序
for (int i = 0;i<arr.length;i++){
int x = i;
for (int j =i+1;j<arr.length;j++){
if (arr[j] < arr[x]){
x = j;
}
}
if (x != i){
arr[i] = arr[i]^arr[x];
arr[x] = arr[i]^arr[x];
arr[i] = arr[x]^arr[i];
}
}

//直接插入排序
for (int i = 1;i<arr.length;i++){
int temp = arr[i];
int j = i;
while(j>0  && arr[j-1]>=temp){
arr[j] = arr[j-1];
j--;
}
arr[j] = temp;
}

System.out.println(Arrays.toString(arr));
return arr[arr.length - k];
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);//键盘输入
System.out.print("请输入该组数据个数:");
int n = in.nextInt();
int[] arr = new int
;
System.out.print("请输入数据值:");
for (int i = 0; i < n; i++) {
arr[i] = in.nextInt();
}
System.out.println("请输入想要获取的是第几个最大值:");
int k = in.nextInt();
long uptime = System.currentTimeMillis();
System.out.println("得第"+k+"个最大值为:"+fun(arr,k));
long endtime = System.currentTimeMillis();
System.out.println("总耗时:" + (endtime - uptime) + "毫秒");
}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  排序算法
相关文章推荐