1、选择排序。
//选择排序
public static void SelectionSort(int[] dataArray)
{
for (int i = 0; i < dataArray.Length; i++)
{
for (int j = i + 1; j < dataArray.Length; j++)
{
if (dataArray[i] > dataArray[j])
{
int temp = dataArray[i];
dataArray[i] = dataArray[j];
dataArray[j] = temp;
}
}
}
}
2、冒泡排序。
//冒泡排序
public static void BubbleSort(int[] dataArray)
{
for (int i = 0; i < dataArray.Length; i++)
{
bool flag = true;
for (int j = 0; j < dataArray.Length - i - 1; j++)
{
if (dataArray[j] > dataArray[j + 1])
{
int temp = dataArray[j];
dataArray[j] = dataArray[j + 1];
dataArray[j + 1] = temp;
flag = false;
}
}
if (flag)
{
break;
}
}
}
3、插入排序。
//插入排序
public static void InsertionSort(int[] dataArray)
{
for (int i = 1; i < dataArray.Length; i++)
{
for (int j = i; j > 0; j--)
{
if (dataArray[j] < dataArray[j - 1])
{
int temp = dataArray[j];
dataArray[j] = dataArray[j - 1];
dataArray[j - 1] = temp;
}
else
{
break;
}
}
}
}
4、二分法排序。
//快速排序
public static void QuickSort(int[] dataArray, int left, int right)
{
int i = left;
int j = right;
int temp = dataArray[left];
if (left >= right)
return;
while (i != j)
{
while (i < j && dataArray[j] >= temp)
j--;
if (j > i)
dataArray[i] = dataArray[j]; //a[i]已经赋值给temp,所以直接将a[j]赋值给a[i],赋值完之后a[j],有空位
while (i < j && dataArray[i] <= temp)
i++;
if (i < j)
dataArray[j] = dataArray[i];
}
dataArray[i] = temp; //把基准插入,此时i与j已经相等R[low..pivotpos-1].keys≤R[pivotpos].key≤R[pivotpos+1..high].keys
QuickSort(dataArray, left, i - 1); /*递归左边*/
QuickSort(dataArray, i + 1, right); /*递归右边*/
}