1:快速排序
快速排序的原理是找一个参考点,前区和后区分别和这个参考点比较,有change就开始互换,那么截至点就是前区的移动位置和后区的移动位置有重合,就代表这轮就结束了,
public class TestQuickSort
{
private List<int> arrayList = new List<int>();//list的初始化
public void createArray()
{
arrayList.Add(10);
arrayList.Add(9);
arrayList.Add(4);
arrayList.Add(3);
arrayList.Add(10);
arrayList.Add(10);
arrayList.Add(0);
arrayList.Add(7);
arrayList.Add(10);
arrayList.Add(8);
}
public void quickSort(int low,int high)
{
if(low >= high)
{
return;
}
int i = low;
int j = high;
int key = arrayList[low];
int temp = 0;
while(true)
{
int right = j;
int left = 0;
for (right=j; right > 0; right--)
{
if(arrayList[right] < key)
{
break;
}
}
for (left = 0; left < j; left++)
{
if(arrayList[left] > key)
{
break;
}
}
if(right < left) //说明没有change的,
{
break;
}
if(right > left) //说明有change的,就交换
{
temp = arrayList[left];
arrayList[left] = arrayList[right];
arrayList[right] = temp;
}
else //说明都走到这个
{
temp = arrayList[left];
arrayList[left] = arrayList[low];
arrayList[low] = temp;
break;
}
PrintList();
}
quickSort(0, i);
quickSort(i + 1, j);
}
public void PrintList()
{
foreach(var item in arrayList)
{
Console.Write("{0}\t", item);
}
Console.WriteLine("");
}
}