排序是指將元素集合按照規定的順序排列。通常有兩種排序方法,公升序排列和降序排列。例如,對整數集進行公升序排列,結果為,對其進行降序排列結果為。總的來說,排序的目的是使資料能夠以更有意義的形式表現出來。雖然排序最顯著的應用是排列資料以顯示它,但它往往可以用來解決其他的問題,特別是作為某些已成型演算法的一部分。
總的來說,排序演算法分為兩大類:比較排序和線性時間排序。比較排序依賴於比較和交換來將元素移動到正確的位置上。令人驚訝的是,並不是所有的排序演算法都依賴於比較。對於那些確實依賴於比較來進行排序的演算法來說,它們的執行時間往往不可能小於o(nlg n)。對於線性時間排序,從它的名字就可以看出,它的執行時間往往與它處理的資料元素個數成正比,即為o(n)。遺憾的是,線性時間排序依賴於資料集合中的某些特徵,所以我們並不是在所有的場合都能夠使用它。某些排序演算法只使用資料本身的儲存空間來處理和輸出資料(這些稱為就地排序),而有一些則需要額外的空間來處理和輸出資料(雖然可能最終結果還是會拷貝到原始的記憶體空間中)。
//////排序演算法
///
///
/// public
class
sorthelper
list[i + 1] =currnet;}}
//////
快速排序
/// ///
目標陣列
///子表的起始位置
///子表的終止位置
public
static
void quicksort(list list, int left, int
right)
}//////
歸併排序
/// ///
目標陣列
///子表的起始位置
///子表的終止位置
public
static
void mergesortfunction(list array, int first, int
last)
}//////
計數排序
///
///要排序的陣列
///陣列的最大值加一
///計數排序後的結果
public
static list countingsort(list arraya, int
arrange)
for (int j = 0; j < arraya.count; j++)
for (int k = 1; k <= arrange; k++)
for (int m = arraya.count - 1; m >= 0; m--)
return
arrayresult.tolist();
}//////
氣泡排序
/// ///
public
void ebullitionsort(listarr)
}j++;}}
#endregion
#region private methods
//////歸併排序的核心部分:將兩個有序的左右子表(以mid區分),合併成乙個有序的表
/// ///
//////
///private
static
void mergesortcore(list array, int first, int mid, int
last)
else
//此時左子表的數 > 右子表的數
}//有一側子表遍歷完後,跳出迴圈,將另外一側子表剩下的數一次放入暫存陣列中(有序)
while (indexa <=mid)
while (indexb <=last)
//將暫存陣列中有序的數列寫入目標陣列的制定位置,使進行歸併的陣列段有序
tempindex = 0
;
for (int i = first; i <= last; i++)
}//////
獲取按樞軸值左右分流後樞軸的位置
/// ///
//////
///private
static
int division(list list, int left, int
right)
else
}return left; //
指向的此時樞軸的位置
}
#endregion
}
對於演算法與資料結構,我們還會繼續,有理論,有實現,希望它可以不那麼枯燥!
感謝咱們的閱讀!
演算法和資料結構 排序 快速排序
交換位置 交換順序表l中子表的記錄,使樞軸記錄到位,並返回其所在位置 此時在它之前 後 的記錄均不大 小 於它。int partition sqlist l,int low,int high return low 返回樞軸所在位置 對順序表l中的子串行l r low.high 作快速排序 void ...
c 演算法和資料結構 快速排序演算法
問題描述 快速排序演算法 描述 快速排序演算法 類名 quicksort public class quicksort while a i pivot i right 從左向右尋找大於支點元素 do while a j pivot j 0 從右向左尋找小於支點元素 if i j break else...
資料結構與演算法 演算法 演算法和資料結構
資料結構與演算法 演算法 好吧,在這裡,您被優秀或優秀的軟體開發人員所隔開。在這種情況下,我會告訴您一開始或至少在我的情況下,並且我知道大多數時候,對於我認識的大多數人,您會覺得自己是乙個無能的人或白痴。基本上,我怎麼可能不理解這一點,然後您會感到沮喪。在這種情況下,我會告訴您情況並不像您想的那麼糟...