1)插入排序(直接插入排序、希爾排序)
2)交換排序(氣泡排序、快速排序)
3)選擇排序(直接選擇排序、堆排序)
4)歸併排序
5)分配排序(基數排序)
所需輔助空間最多:歸併排序
所需輔助空間最少:堆排序
平均速度最快:快速排序
不穩定:快速排序,希爾排序,堆排序。
1.直接插入排序
(1)基本思想:在要排序的一組數中,假設前面(n-1)[n>=2] 個數已經是排
好順序的,現在要把第n 個數插到前面的有序數中,使得這 n個數
也是排好順序的。如此反覆迴圈,直到全部排好順序。
/**2.簡單選擇排序* 插入排序法
* * @param datas
*/
public static int sortinsert(int datas)
datas[j + 1] = algorithmutil.temp;
} return datas;
}
(1)基本思想:在要排序的一組數中,選出最小的乙個數與第乙個位置的數交換;
然後在剩下的數當中再找最小的與第二個位置的數交換,如此迴圈到倒數第二個數和最後一
個數比較為止。
/**3.氣泡排序* 選擇排序
* * @return
*/
public static int sortselect(int datas)
if (i != index)
algorithmutil.swap(datas, i, index);
} return datas;
}
(1)基本思想:在要排序的一組數中,對當前還未排好序的範圍內的全部數,自上而下對
相鄰的兩個數依次進行比較和調整,讓較大的數往下沉,較小的往上冒。即:每當兩相鄰的
數比較後發現它們的排序與排序要求相反時,就將它們互換。
/**4.快速排序* 氣泡排序
* * @return
*/
public static int sortbubble(int datas)
} return datas;
}
(1)基本思想:選擇乙個基準元素,通常選擇第乙個元素或者最後乙個元素,通過一趟掃瞄,
將待排序列分成兩部分,一部分比基準元素小,一部分大於等於基準元素,此時基準元素在其
排好序後的正確位置,然後再用同樣的方法遞迴地排序劃分的兩部分。
/**1.冒泡演算法,2.選擇演算法,3.快速演算法。4.插入演算法,5.希爾演算法,6.堆演算法* 快速排序;分割陣列
* * @param datas
*/
public static int quickpartition(int datas, int left, int right)
datas[left] = pivot; // 當left == right,完成一趟快速排序,此時left位相當於空,等待pivotkey補上
return left;
} /**
* 快速排序;遞迴返回陣列
* * @param datas
*/
public static int sortquick(int datas, int left, int right)
return datas;
}
public class algorithmutil/**
* 擴充陣列長度
* * @param datas
* @param value
* @return
*/
public static int expandarray(int datas, int value)
datas[index] = value;
index++;
return datas;
} }
幾種簡單的排序演算法
整理了一下幾種簡單的排序演算法,暫時先貼上演算法,以後有時間在乙個乙個注釋 參考 下面是 部分 include 演算法1 氣泡排序,時間複雜度o n 2 基本思想 從最後乙個數開始,每次相鄰兩個數字比較,較小數往上浮動 void bubblesort int a,int c 演算法2 選擇排序,時間...
回顧幾種簡單的排序演算法
第一次寫部落格希望能寫的好一點把 回顧了一下幾種經典的排序演算法 氣泡排序 選擇排序 快速排序 插入排序。氣泡排序是一種簡單的排序演算法,它通過從前往後比較相鄰元素,使得較大的數向後 冒 每一趟可以確定乙個最大的數。相當於在末尾不斷排乙個反向的降序序列。從前往後比較相鄰的元素,如果前乙個元素比後乙個...
幾種簡單的排序演算法總結
注 1 以下所有排序演算法均按照從小到大的順序排列 2 以下演算法中用到的交換函式都一樣,如下 void swap int a,int i,int j 因此不在每個排序演算法中進行詳解 1.氣泡排序 1.最簡單的氣泡排序 思想 該排序演算法在排序的過程中總共進行n 1趟排序,每一趟排序都將當前的關鍵...