选择排序
思想:遍历一次数组,选择一个最小值,然后放到第一个位置,第二次遍历数组,再找到一个最小值,放入第二个位置,继续遍历数组,直到尾部,就把数组排好了。
void swap(int arr[],int i,int j)
{
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
void selectionSort(int arr[],int len)
{
for(int i=0;i<len-1;i++)
{
int minPos = i;
for(int j=i+1;j<len;j++)
{
if(arr[j] < arr[minPos])
{
minPos = j;
}
}
swap(arr,i,minPos);
}
}
分析:
时间复杂度:O(N^2)
不稳定:两个相同的数,经过排序后,相对顺序可能会变化.比如在前面的可能会交换到后面.
选择排序是不稳定的排序。