最近在學習JAVA數組方面的知識,瞭解了一些排序算法,今日先將已掌握的兩種算法做一總結記錄
1.我們先來看快排:
我們首先瞭解一下快排的基本思路:在數組中任取一個數為基準值(一般都取第一個元素),然後對數組進行遍歷,將小於基準值的數放在基準值左邊,大於的放右邊,這樣就找到了中間的數,隨後利用遞歸的方法再逐一對每一部分進行排序就可以得到一個有序的數組。
詳見(圖片來源):1.6 快速排序 | 菜鸟教程 (runoob.com)
接下來是代碼展示:
import java.util.Arrays;
public class ArrayTest6{
public static void quickSort(int[]arr,int start,int end){
int i,j,temp,t;
if(start>end)
return;
i=start;j=end;
temp=arr[start];
while(i<j) {
while (arr[j] >= temp && j > i)
j--;
while (arr[i] <= temp && j > i)
i++;
if (i < j) {
t = arr[i];
arr[i]=arr[j];
arr[j]=t;
}
}
arr[start]=arr[i];
arr[i]=temp;
quickSort(arr,start,i-1);
quickSort(arr,i+1,end);
}
public static void main(String[]arge){
int arr[]=new int[]{-98,-34,2,34,54,66,79,105,210,333};
quickSort(arr,0,arr.length-1);
System.out.println(Arrays.toString(arr));//此處用來展示數組内容
}
}
2.我們接下來看看冒泡,如果快排都學會,那冒泡也是輕而易舉,若快排一時看不懂也不要緊,可以先看看冒泡:
思路:相比於快排是先找出中間值,冒泡是直接相鄰的兩個元素比較、交換(因此效率肯定不如快排),也就是說,冒泡排序每一輪比較都會將最大的數(最小的)放在后面,然後多次遍歷,最會也會得到一個有序數組
看圖
圖片來源:1.1 冒泡排序 | 菜鸟教程 (runoob.com)
代碼展示:
import java.util.Arrays;
public class ArrayTest5{
public static void main(String[]arge){
int arr[]=new int[]{-98,-34,2,34,54,66,79,105,210,333};
int i,j;
int temp=0;
for(i=0;i<arr.length-1;i++){
for(j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
都看到這了,點個贊再走吧彥祖!
如有疑問或錯誤,歡迎評論指出。