选择排序
思想:遍历一次数组,选择一个最小值,然后放到第一个位置,第二次遍历数组,再找到一个最小值,放入第二个位置,继续遍历数组,直到尾部,就把数组排好了。
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)
不稳定:两个相同的数,经过排序后,相对顺序可能会变化.比如在前面的可能会交换到后面.
选择排序是不稳定的排序。