1.选择排序
选择排序思想:遍历一组无序数列,默认第一位为最小值,从剩下的数列中,找出最小的那一个,记录下来,和第一位互换位置。依次循环下去,直到排序完成。(图借鉴:https://www.cnblogs.com/weiios/p/3933996.html)
选择排序的比较次数和冒泡排序一样,但交换次数要少于冒泡排序
private void SelectSort(List<int> tempList)
{
//最小值所在的位置
int minPos = 0;
int temp;
for (int i = 0; i < tempList.Count; i++)
{
minPos = i;
for (int j = i+1; j < tempList.Count; j++)
{
if (tempList[j] < tempList[minPos])
{
minPos = j;
}
}
temp = tempList[i];
tempList[i] = tempList[minPos];
tempList[minPos] = temp;
}
}
2.插入排序
插入排序算法思想:
默认一组无序数列中第一位为已经排序好的数
从下一个元素开始,和这个有序数比较,如果下一个元素小于该有序数,则把该有序数放到下一个元素后面。这样这两个数就组成一个有序数列
再继续从第三位开始和这个有序数列从后往前比较,如果小于有序数列中的元素,则把原来元素往后移,继续往前比较,知道找到合适位置。
代码:
private void InsertSort(List<int> tempList)
{
//默认第一个数为基准数列(已经排序好的)
for (int i = 1; i < tempList.Count; i++)
{
//将要参加排序的数
int sortNum = tempList[i];
//和前一位进行比较
int index = i - 1;
while (index >= 0 && sortNum < tempList[index])
{
tempList[index + 1] = tempList[index];
index--;
}
tempList[index + 1] = sortNum;
}
}