对 List 排序
list.Sort( MySort);
默认从小到大排序
public int MySort(par1, par2){
//
return par1.CompareTo(par2);//默认从小到大排序(返回-1)从大到小返回1
}
快速
static private void quicksort(List<int> list, int left, int right) {
int dp;
if (left < right) {
dp = partition(list, left, right);
quicksort(list, left, dp - 1);
quicksort(list, dp + 1, right);
}
}
static private int partition(List<int> list, int left, int right) {
int pivot = list[left];
while (left < right) {
while (left < right && list[right] >= pivot)
right--;
if (left < right)
list[left++] = list[right];
while (left < right && list[left] <= pivot)
left++;
if (left < right)
list[right--] = list[left];
}
list[left] = pivot;
return left;
}
插入
void InsertSort(List<int> pDataArray)
{
for (int i = 1; i < pDataArray.Count; i++) //从第2个数据开始插入
{
int j = 0;
while (j < i && pDataArray[j] <= pDataArray[i]) //寻找插入的位置
j++;
if (j < i) //i位置之前,有比pDataArray[i]大的数,则进行挪动和插入
{
int k = i;
int temp = pDataArray[i];
while (k > j) //挪动位置
{
pDataArray[k] = pDataArray[k-1];
k--;
}
pDataArray[k] = temp; //插入
}
}
}