选择排序-c++

选择排序

选择排序(Selection Sort)是一种简单直观的排序算法,它的工作原理是每一次从未排序的部分元素中找到最小(或最大)的元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

选择排序的基本步骤

  1. 初始状态:在要排序的数组中,第一个元素被看作是当前已排序序列的开始部分。
  2. 查找最小值:遍历未排序部分,找到其中的最小元素。
  3. 交换元素:将找到的最小元素与未排序序列的第一个元素交换位置,这样就保证了该元素处于正确的位置(即已排序部分的末尾)。
  4. 更新范围:缩小未排序部分的范围,不再考虑刚才已确定位置的元素。
  5. 重复过程:重复上述步骤,依次找出剩余未排序部分中的最小元素并放置到位,直到整个序列有序为止。

选择排序的时间复杂度为 O ( n 2 ) O(n^2) O(n2)
因为它需要 n n n次循环(每次循环都要遍历剩余未排序元素),
因此不适合大数据量的排序场景。
但它的优点是所需辅助空间小,
只需要常数级的空间,
并且无论原始数据是否有序,
其时间复杂度都是十分稳定的。

代码实现:

实现 P y t h o n Python Python

def selection_sort(arr):
    #选择排序函数,对输入的列表arr进行升序排序
    n = len(arr)

    # 遍历0到n-2的所有元素,因为最后一个元素无需再进行比较和交换
    for i in range(n - 1):
        # 找到[i, n)区间内的最小元素的索引
        min_index = i
        for j in range(i + 1, n):
            if arr[j] < arr[min_index]:
                min_index = j

        # 将找到的最小元素与当前i位置的元素交换
        arr[i], arr[min_index] = arr[min_index], arr[i]

    return arr

# 示例使用
unsorted_list = [4, 5, 2, 3, 1]
sorted_list = selection_sort(unsorted_list)
print(sorted_list)

实现 C + + C++ C++

int a[] = {4, 5, 2, 3, 1};
int n = 5;
void solve() {
	// 选择排序的基本思想:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,
	// 存放在序列的起始位置,直到全部待排序的数据元素排完。
	for (int i = 0; i < n - 1; i++) {
		// 找到当前未排序部分的最小元素索引
		int minn = i;
		for (int j = i + 1; j < n; j++) {
			if (sl[j] < sl[minn]) {
				minn = j; // 更新最小元素的索引
			}
		}
		// 将找到的最小元素与i位置的元素交换
		if (minn != i) {
			swap(sl[i], sl[minn]);
		}
	}
	for (int i = 0; i < size; i++)
		cout << sl[i] << " ";
}

--------冒泡排序--------

相关推荐

  1. 选择排序-c++

    2024-04-10 03:40:04       38 阅读
  2. C++算法——选择排序

    2024-04-10 03:40:04       28 阅读
  3. 冒泡排序选择排序--C语言

    2024-04-10 03:40:04       40 阅读
  4. 王道c语言-选择排序

    2024-04-10 03:40:04       37 阅读
  5. C#基础之选择排序

    2024-04-10 03:40:04       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-10 03:40:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-10 03:40:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-10 03:40:04       82 阅读
  4. Python语言-面向对象

    2024-04-10 03:40:04       91 阅读

热门阅读

  1. Linux从入门到精通 --- 1.初始Linux

    2024-04-10 03:40:04       40 阅读
  2. 线程常见问题

    2024-04-10 03:40:04       38 阅读
  3. c++day6

    c++day6

    2024-04-10 03:40:04      33 阅读
  4. 【接口测试】接口测试面试基础常识

    2024-04-10 03:40:04       39 阅读
  5. 京东采集器使用教程 京东商家爬虫软件分享

    2024-04-10 03:40:04       38 阅读
  6. 数字排列的方法

    2024-04-10 03:40:04       37 阅读
  7. 题目:取一个整数a从右端开始的4~7位。

    2024-04-10 03:40:04       33 阅读
  8. 前端将列表数据转换为树形数据的函数

    2024-04-10 03:40:04       39 阅读
  9. CSS世界Ⅱ(文本)

    2024-04-10 03:40:04       40 阅读
  10. js sort() 方法

    2024-04-10 03:40:04       36 阅读