1. 程式人生 > >陣列排序的幾種方式

陣列排序的幾種方式

Java陣列排序方式一般有四種,氣泡排序法、快速排序法、選擇排序法、插入排序法;

氣泡排序法是通過遍歷陣列一個一個進行比較,然後按照最大最小值排序;

package com.shy.arraySortTest;


public class BubbleSort {


public static void main(String[] args) {

int[] arr={8,23,1,22,15,25};
int temp;
for (int i = 0; i < arr.length-1; i++) {
for (int j = i+1; j < arr.length; j++) {
//這裡用從小到大的排序方式,因此當arr[i]大於arr[j]時進行值互換
if (arr[i]>arr[j]) {
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}

}


}

快速排序法是Arrays類的一個sort()方法;

package com.shy.arraySortTest;


import java.util.Arrays;


public class ArraySort {


public static void main(String[] args) {
int[] arr={8,23,1,22,15,25};
Arrays.sort(arr);//從小到大的排序方式
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}


}

選擇排序法是先選擇一個數作為最大或者最小數,然後迴圈比較確定陣列;

package com.shy.arraySortTest;


public class SelectSort {


public static void main(String[] args) {
int[] arr={8,23,1,22,15,25};
int temp;
for (int i = 0; i < arr.length; i++) {
int min = i;//被認為是最小值的下標
for (int j = i+1; j < arr.length; j++) {
if(arr[min]>arr[j]){
//如果認為的最小值不是最小,那麼下標改變
min=j;
}
}
if(min!=i){
//這裡是在上面每次比較後判斷min的下標是否改變,如果改變那麼對應下標的值也需要改變
temp=arr[i];
arr[i]=arr[min];
arr[min]=temp;
}
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}


}

插入排序通過不斷插入比較順序來確定陣列最後的順序。

package com.shy.arraySortTest;


public class InsertSort {


public static void main(String[] args) {
int[] arr={8,23,1,22,15,25};
int temp;
for (int i = 1; i < arr.length; i++) {
for (int j = i; j >0; j--) {
//同樣作為從小到大的排序方式,那麼當arr[j]小於arr[j-1]時值進行互換
if(arr[j]<arr[j-1]){
temp=arr[j-1];
arr[j-1]=arr[j];
arr[j]=temp;
}else{
break;
}

}
for (int k = 0; k < arr.length; k++) {
//這裡輸出可以看到每迴圈一次陣列的變化,更容易理解插入排序方式
System.out.print(arr[k]+" ");

}
System.out.println();
System.out.println("=================================");
}

}


}