Java的三种常用排序
- 冒泡排序
- 选择排序
- 工具类排序
建议直接copy代码,运行一下以便以理解
import java.util.Scanner;
import java.util.Arrays;
class BubbleSort
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("长度:");
int len = sc.nextInt();
int[] arr = new int[len];
for(int i =0;i<arr.length;i++){
System.out.println("第"+(i+1)+"数:");
arr[i]=sc.nextInt();
}
bubbleSort(arr);//冒泡排序;
selectionSort(arr)//选择排序;
Arrays.sort(arr);//利用Java类来排序.
for(int e :arr){
System.out.print(e+"\t");
}
}
public static void bubbleSort(int[] arr){
for(int i= 1; i<arr.length;i++){//控制轮数:
for(int j = 0;j < arr.length - i;j++){
if(arr[j] > arr[j+1]){
//交换
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for(int e:arr){//强化遍历
System.out.print(e+"\t");
}
System.out.println("升序冒泡over");
}
/**
* 选择排序: 思路: 每一轮找个基准值:在基准值上放一个比较小的数.
* 定义一个变量k用于记录每轮最小值的下标,以便交换.
*/
public static void selectionSort(int[] arr){
for(int i =0;i<arr.length-1;i++){
int k=i;
for(int j = k+1;j<arr.length;j++){
if(arr[k]>arr[j])
k=j;
}
//防止过度交换:因为一轮后k值没变的话,就没必要交换.
if(k!=i){
int temp = arr[i];
arr[i] = arr[k];
arr[k] = temp;
}
}
for(int e :arr){
System.out.print(e+"\t");
}
System.out.println("选择排序...over");
}
}