快速排序:
為啥叫快速排序,因為速度快,效率高
1.先找乙個數作為基準。
作為基準的這個數,一趟排下來,左邊的數必小於它,右邊的數必大於它,也就是說,它找到了自己的位置。
2.將兩個指標i,j分別指向表的起始(基準)和最後的位置。
3.比較j指標的數字是否小於基準,j–,直到j小於基準,交換位置
4.比較i指標的數字是否大於基準,i++,直到i大於基準,交換位置
5.若i==j,一趟排序完成。
保證了基準的左邊比它小,右邊比它大
(來自網路,我稍作修改)
//若iwhile(left out.println( );
for(int x:arr)
//現在基準找到位置
//將基準左邊的繼續快排
quick(arr,i,right-1);
//將基準右邊的繼續快排
quick(arr,left+1,j);
}return arr;
}public
static
void
main (string args);
int len=arr.length-1;
quick(arr,0,len);
system.out.println();
system.out.println("最終:");
for(int i:arr)}}
輸出:
最好的情況:o(nlogn);
最壞的情況:o(n^2);
平均時間複雜度為o(nlogn)。
但是不穩定.
(若有兩個數相等,但是還交換了位置,則稱不穩定)
氣泡排序
氣泡排序和上乙個快速排序都為交換排序都是通過比較並交換位置完成的。
1.從頭開始,依次比較相鄰連個數大小,i>i+1,則交換兩個位置;
2.一趟完成後,保證了最後乙個數為最大值;
3.除過最後乙個,從頭開始比較相鄰兩個數大小;
}system.out.print("第"+(i+1)+"趟 ");
for(int x:arr)
system.out.println( );
}return arr;
}public
static
void
main (string args);
quick(arr);
system.out.println("最終:");
for(int i:arr)}}
輸出:
我覺得氣泡排序叫沉石排序更形象^.^,最大的沉到最後。
最好的情況:o(n);
最壞的情況:o(n^2);
平均時間複雜度為o(n^2)。
穩定.
交換排序演算法
就是根據序列中兩個記錄鍵值的比較結果來對換這兩個記錄在序列中的位置。將鍵值較大的記錄向序列的尾部移動,鍵值較小的記錄向序列的前部移動。氣泡排序 快速排序 說明 1.以下方法最後結果均按照公升序排列 2.用4,2,1,3,7,4,5,8,3,5序列進行測試 1 基本思想 在n個待排序陣列中選取待排序數...
排序演算法 交換排序
交換排序的基本思想 兩兩比較待排序元素的關鍵字,發現兩個元素的次序相反時則進行交換,直到沒有反序的元素為止。1.氣泡排序 交換排序 演算法 氣泡排序 bubble sort 輸入 待排序元素的陣列,待排序元素個數 輸出 原理 通過無序區中相鄰元素間關鍵字的比較和位置的交換,使關鍵字最小的元素如氣泡一...
排序演算法 交換排序
基本思想 在乙個待排序序列中,兩兩比較元素的排序碼,如果不滿足次序要求則進行交換,直到整個排序序列滿足要求。思想 對待排序序列從前向後,依次比較相鄰元素的排序碼,若發生逆序,則進行交換。實現 include void bubblesort int p,int n if flag 減少不必要的比較 r...