NO IMAGE

請看文章:

排序經典集合:插入排序,氣泡排序,快速排序,選擇排序,程式碼簡單請看下面的基本介紹和程式碼

插入排序:直接插入排序是一種最簡單的排序方法,它的基本操作是將一個記錄插入到一排好序的有序表中    時間複雜度為:O(n^2)

package paixu;
/**
* 氣泡排序
* @author 肖華    [email protected] 
*
*/
public class Charu {
public static void main(String[] args) {
int[] arr=new int[]{1,9,5,4,8,7,0,2,3,6};
for(int i=1;i<arr.length;i  ){
int temp=arr[i];
//			int j=i-1;//在arr[0]-arr[j-1]內為有序的元素
//			while(j>=0){
//				if(arr[j]>temp){
//					arr[j 1]=arr[j];//往後移動
//					j--;
//				}else{
//					break;//找到這個元素了
//				}
//			}
//				arr[j 1]=temp;
int j=0;
for(j=i-1;j>=0;j--){
if(arr[j]>temp){
arr[j 1]=arr[j];//往後移動
}else{
break;//找到這個元素了
}
}//這個元素有可能是第一位
arr[j 1]=temp;//插入
}
print(arr);
}
public static void print(int[] arr){
for(int i=0;i<arr.length;i  ){
System.out.print(arr[i]);
}
}
}

氣泡排序:氣泡排序是將前一個與臨近的一個元素比較,如果前者大於後者則交換順序,在一輪排序之後,最後一個是最大的,第二次倒數第二個最大,一次直到所有的序列都為有順序的數列  時間複雜度為:o(n^2)

package paixu;
/**
* 氣泡排序
* @author 肖華    [email protected] 
*
*/
public class Maopao {
public static void main(String[] args) {
int[] arr=new int[]{1,9,5,4,8,7,0,2,3,6};
for(int j=0;j<arr.length-1;j  ){
for(int i=0;i<arr.length-1;i  ){
if(arr[i]>arr[i 1]){
int temp=arr[i 1];
arr[i 1]=arr[i];
arr[i]=temp;
}
}
}
print(arr);
}
public static void print(int[] arr){
for(int i=0;i<arr.length;i  ){
System.out.print(arr[i]);
}
}
}

快速排序:快速排序運用到了分割的思想,通過一趟排序將帶排記錄分割成獨立的兩部分,其中一部分記錄的關鍵字均比另一部分記錄的關鍵字小,然後遞迴對這兩部分繼續分割排序,已達到整個序列有序  時間複雜度為:knln(n) 結合氣泡排序,可以降低至O(log(n));

package paixu;
/**
* 氣泡排序
* @author 肖華    [email protected] 
*
*/
public class Quick {
public static void main(String[] args) {
int[] arr=new int[]{1,9,5,4,8,7,0,2,3,6};
qSort(arr, 0, 9);
print(arr);
}
public static void qSort(int[] arr,int low,int high){
if(low<high){
int middle=partition(arr, low, high);//分組
qSort(arr,low,middle);//遞迴排序
qSort(arr, middle 1, high);
}
}
public static int partition(int[] arr,int low,int high){
int key=arr[low];
while(low <high){
while(low<high&&arr[high]>=key){
high--;
}
//交換順序
int temp=arr[low];//此時arr[low]==key
arr[low]=arr[high];
arr[high]=temp;//此時arr[high]==key
while(low<high&&arr[low]<=key){
low  ;
}
temp=arr[high];//此時arr[high]==key
arr[high]=arr[low];
arr[low]=temp;//此時arr[low]==key
}
return low;
}
public static void print(int[] arr){
for(int i=0;i<arr.length;i  ){
System.out.print(arr[i]);
}
}
}

選擇排序:這個排序比較簡單,也很容易理解,通過n-i 1(i=1,2,..n-1)個記錄中選取關鍵字最小的記錄作為關鍵字,並和第i(1<=i<=n)個記錄交換 時間複雜度為O(n^2)

package paixu;
/**
* 氣泡排序
* @author 肖華    [email protected] 
*
*/
public class Xuanze {
public static void main(String[] args) {
int[] arr=new int[]{1,9,5,4,8,7,0,2,3,6};
for(int i=0;i<arr.length;i  ){
for(int j=i 1;j<arr.length;j  ){
if(arr[i]>=arr[j]){//選擇最小的,保留在i位置
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
print(arr);
}
public static void print(int[] arr){
for(int i=0;i<arr.length;i  ){
System.out.print(arr[i]);
}
}
}

以上程式碼複製即可執行,寫的很簡單,沒有什麼設計方法,有什麼不懂得可以留言一起探討

轉載之後請註明出處:http://blog.csdn.net/xh199110/article/details/39672835 
飛天部落格  

謝謝