java冒泡排序和選擇排序詳解
冒泡排序(Bubble Sorting)的基本思想是:通過對待
排序序列從前向后(從下標較小的元素開始),依次比較相鄰元素的值,若發(fā)現(xiàn)逆序則交換,使值較大的元素逐漸從前移向后部,就象水底下的氣泡一樣逐漸向上冒。
因為排序的過程中,各元素不斷接近自己的位置,如果一趟比較下來沒有進行過交換,就說明序列有序。
圖解冒泡排序算法的過程
原始數(shù)組:3, 9, -1, 10, 20
第一趟排序
(1) 3, 9, -1, 10, 20 // 如果相鄰的元素逆序就交換
(2) 3, -1, 9, 10, 20
(3) 3, -1, 9, 10, 20
(4) 3, -1, 9, 10, 20
第二趟排序
(1) -1, 3, 9, 10, 20 //交換
(2) -1, 3, 9, 10, 20
(3) -1, 3, 9, 10, 20
第三趟排序
(1) -1, 3, 9, 10, 20
(2) -1, 3, 9, 10, 20
第四趟排序
(1) -1, 3, 9, 10, 20
小結冒泡排序規(guī)則
(1) 一共進行 數(shù)組的大小-1 次 大的循環(huán)
(2)每一趟排序的次數(shù)在逐漸的減少
(3) 如果我們發(fā)現(xiàn)在某趟排序中,沒有發(fā)生一次交換, 可以提前結束冒泡排序。這個就是優(yōu)化
import java.util.Arrays;public class BubbleSort {public static void main(String[] args) {// TODO Auto-generated method stubint arr[]= {3,9,-1,10,-2};//第i+1趟排序,將最大的數(shù)排在最后int temp=0;//臨時變量for(int i=0;i<arr.length-1;i++) {//定義第幾輪排序for(int j=0;j<arr.length-1-i;j++) {if(arr[j+1]<arr[j]) { temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}System.out.println('輸出第'+(i+1)+'趟排序的結果');System.out.println(Arrays.toString(arr));} }}
運行結果:
輸出第1趟排序的結果[3, -1, 9, -2, 10]輸出第2趟排序的結果[-1, 3, -2, 9, 10]輸出第3趟排序的結果[-1, -2, 3, 9, 10]輸出第4趟排序的結果[-2, -1, 3, 9, 10]
2、選擇排序法排序思路:
原始的數(shù)組 : 101, 34, 119, 1
第一輪排序 : 1, 34, 119, 101
第二輪排序 : 1, 34, 119, 101
第三輪排序 : 1, 34, 101, 119
說明:
1.選擇排序一共有 數(shù)組大小 - 1 輪排序
2.每1輪排序,又是一個循環(huán), 循環(huán)的規(guī)則(代碼)
2.1先假定當前這個數(shù)是最小數(shù) 2.2 然后和后面的每個數(shù)進行比較,如果發(fā)現(xiàn)有比當前數(shù)更小的數(shù),就重新確定最小數(shù),并得到下標 2.3 當遍歷到數(shù)組的最后時,就得到本輪最小數(shù)和下標 2.4 交換 [代碼中再繼續(xù)說 ]import java.util.Arrays;public class QuickSort { public static void main(String[] args) { //int []arr={ 8,3,2,1,7,4,6,5}; int [] arr={101,34,109,1}; quicksort(arr); } public static void quicksort(int []arr){for(int j=0;j<arr.length-1;j++) { int minindex=j;//假定當前下標為最小值下標 int minnumber=arr[j];//假定當前元素為最小值 for (int i = 1+j; i < arr.length; i++) {if (arr[i] < minnumber) {//若假定最小值并不是最小的 minnumber = arr[i];//重置minnumber minindex = i;//重置minindex} } //將最小值交換 arr[minindex] = arr[j]; arr[j] = minnumber; System.out.println('第'+(j+1)+'輪'); System.out.println(Arrays.toString(arr));} }}總結
本篇文章就到這里了,希望可以給你帶來一些幫助,也希望您能夠多多關注好吧啦網(wǎng)的更多內容!
相關文章:
1. 理解PHP5中static和const關鍵字2. Android table布局開發(fā)實現(xiàn)簡單計算器3. jQuery 實現(xiàn)DOM元素拖拽交換位置的實例代碼4. IntelliJ IDEA安裝插件的方法步驟5. php模擬實現(xiàn)斗地主發(fā)牌6. vue 使用localstorage實現(xiàn)面包屑的操作7. Vue封裝一個TodoList的案例與瀏覽器本地緩存的應用實現(xiàn)8. Python random庫使用方法及異常處理方案9. .Net Core使用Coravel實現(xiàn)任務調度的完整步驟10. Vuex localStorage的具體使用

網(wǎng)公網(wǎng)安備