国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

【算法】C#快速排序類

2024-07-21 02:18:24
字體:
來源:轉載
供稿:網友
快速排序的基本思想是基于分治策略的。對于輸入的子序列ap..ar,如果規模足夠小則直接進行排序,否則分三步處理:

分解(divide):將輸入的序列ap..ar劃分成兩個非空子序列ap..aq和aq+1..ar,使ap..aq中任一元素的值不大于aq+1..ar中任一元素的值。
遞歸求解(conquer):通過遞歸對p..aq和aq+1..ar進行排序。
合并(merge):由于對分解出的兩個子序列的排序是就地進行的,所以在ap..aq和aq+1..ar都排好序后不需要執行任何計算ap..ar就已排好序。
這個解決流程是符合分治法的基本步驟的。因此,快速排序法是分治法的經典應用實例之一。

using system;

namespace vcquicksort
{
/// <summary>
/// classquicksort 快速排序。
/// 范維肖
/// </summary>
public class quicksort
{
public quicksort()
{
}

private void swap(ref int i,ref int j)
//swap two integer
{
int t;
t=i;
i=j;
j=t;
}

public void sort(int [] list,int low,int high)
{
if(high<=low)
{
//only one element in array list
//so it do not need sort
return;
}
else if (high==low+1)
{
//means two elements in array list
//so we just compare them
if(list[low]>list[high])
{
//exchange them
swap(ref list[low],ref list[high]);
return;
}
}
//more than 3 elements in the arrary list
//begin quicksort
myquicksort(list,low,high);
}

public void myquicksort(int [] list,int low,int high)
{
if(low<high)
{
int pivot=partition(list,low,high);
myquicksort(list,low,pivot-1);
myquicksort(list,pivot+1,high);
}
}

private int partition(int [] list,int low,int high)
{
//get the pivot of the arrary list
int pivot;
pivot=list[low];
while(low<high)
{
while(low<high && list[high]>=pivot)
{
high--;
}
if(low!=high)
{
swap(ref list[low],ref list[high]);
low++;
}
while(low<high && list[low]<=pivot)
{
low++;
}
if(low!=high)
{
swap(ref list[low],ref list[high]);
high--;
}
}
return low;
}

}
}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阜宁县| 宜良县| 绵阳市| 漠河县| 汤原县| 綦江县| 濮阳市| 共和县| 霞浦县| 册亨县| 永川市| 潮州市| 秦皇岛市| 泗水县| 青铜峡市| 禄丰县| 独山县| 兴安县| 海林市| 南召县| 视频| 亳州市| 光泽县| 内丘县| 柘城县| 宁乡县| 黑水县| 寿阳县| 卓资县| 奈曼旗| 米脂县| 涪陵区| 佳木斯市| 凤台县| 柳林县| 新龙县| 平昌县| 和田县| 龙川县| 沾益县| 新邵县|