自己建购物网站,昆山网站建设哪家好,吉林seo推广,温州seo网站建设描述
选择排序#xff08;Selection Sort#xff09;是一种简单直观的排序算法。它的基本思想是#xff1a;每一轮从待排序的数据中选择最小#xff08;或最大#xff09;的一个元素#xff0c;然后与待排序数据的第一个元素交换位置。对剩余未排序的数据重复这个过程Selection Sort是一种简单直观的排序算法。它的基本思想是每一轮从待排序的数据中选择最小或最大的一个元素然后与待排序数据的第一个元素交换位置。对剩余未排序的数据重复这个过程直到所有数据排序完成。
实现思路
遍历数组找到最小元素的下标。将最小元素与当前遍历位置的元素交换位置。
图解 时间复杂度
选择排序的时间复杂度为O(n^2)其中n为待排序的数组长度。
空间复杂度
选择排序的空间复杂度为O(1)只需要常数级别的辅助空间。
示例代码
#include iostreamvoid selectionSort(int arr[], int n) {for (int i 0; i n - 1; i) {int minIndex i;for (int j i 1; j n; j) {if (arr[j] arr[minIndex]) {minIndex j;}}// 最小元素与当前元素交换int temp arr[i];arr[i] arr[minIndex];arr[minIndex] temp;std::cout sort : i1 :;for(int k 0; k n-1; k){std::cout arr[k] \t;}std::cout std::endl;}
}int main() {int arr[] {9, 1, 2, 5, 7, 4, 8, 6, 3, 5};int n sizeof(arr) / sizeof(arr[0]);std::cout sort Before: std::endl;selectionSort(arr, n);std::cout sort End: \n;for (int i 0; i n; i) {std::cout arr[i] ;}std::cout std::endl;return 0;
}结果
注意事项
选择排序是一种不稳定的排序算法即相同元素的相对顺序可能会改变。选择排序的性能较差不适用于大规模数据的排序。在实际应用中可以通过优化算法来提高选择排序的性能比如记录最小元素的位置然后直接交换。需要进行多次交换操作相比其他排序算法选择排序的交换次数较多。
结论
不管脚步有多慢都不要紧只要你在走总会看到进步。