這四種耳熟能祥的排序演算法,找了個時間自己去重寫研究了一遍,考察了他們的執行效率問題。當然對於一些初級的程式設計師千萬別在拿著選擇排序當氣泡排序的用了。所有的排序都是根據自己對排序思想的理解後編寫的,如有不正確的地方還請提出。
簡單選擇排序:每次從陣列序列中選擇乙個元素與其他所有元素進行比較,每趟可以確定序列中最小的元素。
public
static
void
******sort(int a)}}
}
氣泡排序:每次比較序列相鄰的兩個位置的元素,在n-1趟之後便可比較所有元素獲取有序序列
public
static
void
bubblesort(int a)
}j++;
}}
插入排序:建立乙個新的陣列,從舊的陣列中一次獲取元素插入到新陣列中,在插入過程中判斷元素應插入的位置,依次插入所有元素。
public
static
void
insertsort(int a)else
temp[j]=a[i];
break;}}
}for(int i=0;i快速排序:設定兩個游標i,j和乙個主元,i從左向右獲取第乙個大於主元的元素,如果找不到游標置於最後乙個元素位置,j從右向左獲取第乙個小於主元的元素,如果找不到,游標置於第二個元素位置。在i
public
static
intdevision(int a,int left,int right)while(idowhile(j>left&&a[j]>=a[left]);
//swap(a[i],a[j]);
if(ielse
}while(ireturn j;
}public
static
void
quicksort(int a,int left,int right)else
}public
static
void
quicksort(int a)
設定獲取執行排序前後時間間隔來分析演算法執行時間
public
static
void
main(string args)
long time1=system.currenttimemillis();
//******sort(a);
//bubblesort(a);
insertsort(a);
//quicksort(a);
long time2=system.currenttimemillis();
system.out.println(time2-time1+"ms");
//display(a);
}
看到網上一些觀點說氣泡排序應當比插入快的,可是我的結果卻完全不同,插入比冒泡在6w 資料排序中快了7000多。不知道是否是我的**引起的。 排序(1) 冒泡,簡單選擇,快速,簡單插入
排序是底層常用的演算法。整理下知識,以便以後複習。1 氣泡排序算是最簡單的排序方法了,簡單易懂。從第乙個數開始,將每乙個數與它之後的數進行比較,然後將較大的數放在後面,依次迴圈比較,一輪比較結束後,最大的數就會被排放到最後,就像冒泡一樣,最大 最小 的數從底層擠到的最後面 最前 後面就簡單了,排除已...
氣泡排序 插入排序和簡單選擇排序
一次比較兩個元素,如果他們的順序錯誤就把他們交換過來 氣泡排序 test public void bubblesort int temp 交換時記錄中間值 for int i 1 i array.length i for int i 0 i array.length i 取無序的區間數值去插入到有序...
氣泡排序and簡單選擇排序
在第一趟排序中,從第乙個元素開始,掃瞄整個待排序元素序列,若相鄰的兩個元素逆序,則交換位置。直到最後乙個元素,此時,最後乙個元素必為最大的元素。第二趟排序,依然從第乙個元素開始掃瞄直到倒數第二個元素。第三趟排序,從第乙個掃瞄到倒數第三個。直到只剩乙個元素需要掃瞄。程式如下 includeint ma...