快速排序算法是最快的排序算法,當然它是針對大量通常無序的集合而言是正確的。
public?void?QSort()
{
????RecQSort(0,?numElements?-?1);
}
public?void?RecQSort(int?first,?int?last)
{
????if?((last?-?first)?<=?0)
????????return;
????else
????{
????????int?part?=?this.Partition(first,?last);
????????RecQSort(first,?part?-?1);
????????RecQSort(part?+?1,?last);
????}
}
public?int?Partition(int?first,?int?last)
{
????int?pivotVal?=?arr[first];
????int?theFirst?=?first;
????bool?okSide;
????first++;
????do
????{
????????okSide?=?true;
????????while?(okSide)
????????????if?(arr[first]?>?pivotVal)
????????????????okSide?=?false;
????????????else
????????????{
????????????????first++;
????????????????okSide?=?(first?<=?last);
????????????}
????????okSide?=?true;
????????while?(okSide)
????????????if?(arr[last]?<=?pivotVal)
????????????????okSide?=?false;
????????????else
????????????{
????????????????last--;
????????????????okSide?=?(first?<=?last);
????????????}
????????if?(first?<?last)
????????{
????????????Swap(first,?last);
????????????this.DisplayElements();
????????????first++;
????????????last--;
????????}
????}?while?(first?<=?last);
????Swap(theFirst,?last);
????this.DisplayElements();
????return?last;
}
public?void?Swap(int?item1,?int?item2)
{
????int?temp?=?arr[item1];
????arr[item1]?=?arr[item2];
????arr[item2]?=?temp;
}
如果數組內的的數據是隨機的,那么選擇第一個
最流行的選擇中間值得方法。
theFirst?=?arr[(int)arr.GetUpperBound(0)?/?2]
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
