快速排序算法是最快的排序算法,當(dāng)然它是針對(duì)大量通常無序的集合而言是正確的。
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;
}
如果數(shù)組內(nèi)的的數(shù)據(jù)是隨機(jī)的,那么選擇第一個(gè)
最流行的選擇中間值得方法。
theFirst?=?arr[(int)arr.GetUpperBound(0)?/?2]
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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