排序算法
- 冒泡排序
1、第一种
int temp;
for (int i = 0; i < list.Count - 1; i++)
{
for (int j = 0; j < list.Count - i - 1; j++)
{
if (list[j] > list[j + 1])
{
temp = list[j];
list[j] = list[j + 1];
list[j + 1] = temp;
}
}
}
2、第二种(相对比较高效)
int temp;
for (int i = 0; i < list.Count - 1; i++)
{
bool flag = true;
for (int j = 0; j < list.Count - i - 1; j++)
{
if (list[j] > list[j + 1])
{
temp = list[j];
list[j] = list[j + 1];
list[j + 1] = temp;
flag = false;
}
}
if (flag == true)
{
break;
}
}
- 选择排序
//要遍历的次数
for (int i = 0; i < list.Count - 1; i++)
{
//假设k的下标的值最小
int k = i;
for (int j = i + 1; j < list.Count; j++)
{
//如果k下标的值大于j下标的值,则记录较小值下标j
if (list[k] > list[j])
k = j;
}
//最后将假想最小值跟真的最小值进行交换
if (k != i)
{
var tempData = list[k];
list[k] = list[i];
list[i] = tempData;
}
}
- 插入排序
//无序序列
for (int i = 1; i < list.Count; i++)
{
var temp = list[i];
int j;
//有序序列
for (j = i - 1; j >= 0 && temp < list[j]; j--)
{
list[j + 1] = list[j];
}
list[j + 1] = temp;
}