public class QuickSort
{
public List<int> list = null;
public QuickSort(List<int> l)
{
list = l;
}
//從小到大排序
public void qs(int l, int r)
{
int i = l;
int j = r;
if (i >= j)//如果當(dāng)前排序集合里面的元素個(gè)數(shù)小于2個(gè)則結(jié)束此分支的排序
{
return;
}
int key = list[i];//以集合第一個(gè)元素作為界定值
while (i < j)//排序
{
while (i < j && list[j] >= key)//從后往前匹配第一個(gè)小于界定值key的值
{
j--;
}
list[i] = list[j];//將當(dāng)前j位置的值放到i處
while (i < j && list[i] <= key)//從前往后匹配第一個(gè)大于界定值key的值
{
i++;
}
list[j] = list[i];//將當(dāng)前i位置的值放到j(luò)處
}
list[i] = key;//這里完成
//以key為分界將數(shù)字集合分成兩個(gè)集合 遞歸進(jìn)行下一輪排序
qs(l, i - 1);//小于等于key部分
qs(i + 1, r);//大于等于key部分
}
}