//插入排序
static void InsertSort(List<int>list)
{
for(int i = 1; i < list.Count; i++)
{
int iValue = list[i];
bool IsInsert = false;
for(int j = i-1; j >=0; j--)
{
if (list[j] > iValue)
{
list[j + 1] = list[j];
}
else
{
list[j + 1] = iValue;
IsInsert = true;
break;
}
}
if (!IsInsert)
{
list[0] = iValue;
}
}
}
//选择排序
static void SelectSort(List<int> list)
{
for(int i = 0; i < list.Count - 1; i++)
{
int min = list[i];
int minIndex = i;//最小值所在索引
for(int j = i+1; j < list.Count; j++)
{
if (list[j] < min)
{
min = list[j];
minIndex = j;
}
}
if (minIndex != i)
{
int tmp = list[i];
list[i] = list[minIndex];
list[minIndex] = tmp;
}
}
}
//冒泡排序
static void MaoPaoSort(List<int> list)
{
for(int i = 0; i < list.Count-1; i++)
{
for(int j = 0; j + i < list.Count - 1; j++)
{
if (list[j] > list[j + 1])
{
int tmp = list[j];
list[j] = list[j + 1];
list[j + 1] = tmp;
}
}
}
}
//快速排序
static void QuickSort(List<int> list,int left,int right)
{
if (left < right)
{
int x = list[left];//基准数
int i = left;
int j = right;
while (true && i < j)
{
//从后往前比较,此时坑是i
while (true && i < j)
{
if (list[j] <= x)//比基准数小,放在左边
{
list[i] = list[j];
break;
}
else
{
j--;
}
}
//从前往后比较,此时的坑是j
while (true && i < j)
{
if (list[i] > x)
{
list[j] = list[i];
break;
}
else
{
i++;
}
}
//跳出循环,此时i=j
list[i] = x;
QuickSort(list, left, i-1);
QuickSort(list, i + 1, right);
}
}
}
四种排序方式
最新推荐文章于 2022-11-27 20:23:00 发布