七大排序–选择排序
算法思想
*选择排序:很简单的一种排序(按从小到大排序)
*`基本思想:
*1.首先在未排序的数列上寻找最小值,
*2.找到最小值的值和位置,将其存放在数列的起始位置
*3.再从未排序的数列中寻找最小元素,找到后放到已排序的数列末尾
*4.依稀类推,直到遍历结束
动图演示
复杂度
动图演示
后续补上
代码
/*=========================================================================*/
/**
*选择排序:很简单的一种排序(按从小到大排序)
*基本思想:
*1.首先在未排序的数列上寻找最小值,
*2.找到最小值的值和位置,将其存放在数列的起始位置
*3.再从未排序的数列中寻找最小元素,找到后放到已排序的数列末尾
*4.依稀类推,直到遍历结束
*/
public static void selectSort(int[] arr)
{
//数组长度
int len= arr.Length;
//设置哨兵,目的记录最小值的位置
int min;
for (int i = 0; i < len; i++)
{
//默认设置最小值的位置为未排序的数列初始值
min = i;
//i+1:因为默认起始值为已排序数列,所以未排序的首位为i+1
for (int j = i+1; j < len; j++)
{
//寻找最小值的位置
if (arr[j]<arr[min])
{
min = j;
}
}
//找到最小的位置,进行交换
if (min!=i)
{
swap(arr, i, min);
}
}
}
private static void swap(int[] arr, int i, int min)
{
arr[i] = arr[i] ^ arr[min];
arr[min] = arr[i] ^ arr[min];
arr[i] = arr[i] ^ arr[min];
}