首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

选择排序

选择排序 分析 假设已经给定了一个无序数组,现在需要将其按照一定顺序排好。现在我们使用选择排序,每次从数组中选出一个最大的元素并将其与数组最后一个元素交换位置,使数组最后一个元素变为最大的。...随着排序的进行,每次需要检查的元素数在逐渐减少,最后一次需要检查的元素都只有一个。既然如此,运行时间怎么还是O(*n*2)呢?这个问题问得好,这与大O表示中的常数相关。...但大O表示省略诸如1/2这样的常数(有关这方面的完整讨论,请参阅第4章),因此简单地写作O(n × n)或O(*n*2)。 ​...— 《算法图解》 代码实现 C语言实现 因为C中对数组的删除比较麻烦,所以我没有按照《算法图解》中的思路每次选择最小的元素,而是选择了最大的。

39920
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    数组排序 - 冒泡排序与直接选择排序

    花时间研究了一下两种不同的排序算法,下面给出介绍。 1 . 冒泡排序算法 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。...直接选择排序 选择排序是一种简单直观的排序算法。 其基本思想是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。...#include // 直接选择排序 int a[10]; void sort(int a[],int n){ int index; for(int i=1;i<...另外想要更快的去解决排序问题的话,可以下功夫去研究一下库里面的 qsort函数,也非常的实用!

    61810

    Python——关于排序算法(选择排序

    这是奔跑的键盘侠的第98篇文章 接前面两篇,今天继续讲选择排序。...选择排序(selection sort) 先来看一下百度百科的定义: 选择排序 是对 定位比较交换法(也就是冒泡排序) 的一种改进。...选择排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。...百度百科 举个例子: 有列表[3,8,4,2,1,6] 用选择排序操作: 第一轮: 假设首数字最小,然后依次比对,最终取得最小值的序号,也就是1的序号,然后将1与首位数字互换: 1,8,4,2,3,6...选择排序总的平均时间复杂度为 ? 。

    68230

    冒泡排序、插入排序选择排序

    冒泡排序、插入排序以及选择排序排序算法中比较基础的三种,其平均时间复杂度都是O(n^2)。...原理介绍 冒泡排序 冒泡排序的步骤是:比较相邻两个数,看是否满足大小关系,如果不满足则交换这两个数,使他们满足大小关系,这样可以保证最大(最小)的数始终会向后流动,循环一次之后,最大(最小)的数就会被交换到数组的最后...一次冒泡会让至少一个元素移动到它应该在的位置,重复 n 次,就完成了 n 个数据的排序工作。 插入排序 插入排序的思路是:把数组分成两个部分:排好序的,和未排序的。...选择排序 选择排序和插入排序类似,都是将数组分为排好序的和未排序的两个部分。不同的是,选择排序每次迭代都会选择排序部分中的最小(最大)值,将其插入到排好序部分的队首(队尾)。...然后需要用户输入排序算法。输入完成后打印排序前的数组,然后根据相应的排序算法进行排序,最后再打印出排序后的数组。

    7610

    python中对列表元素大小排序(冒泡排序选择排序和插入排序)—排序算法

    本文主要讲述python中经常用的三种排序算法,选择排序,冒泡排序和插入排序及其区别。通过对列表里的元素大小排序进行阐述。...一、选择排序 选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。 1....arr[x], arr[y] = arr[y], arr[x] return arr print(selectionSort([1, 3, 1, 4, 5, 2, 0])) 二、冒泡排序...arr[y], arr[y + 1] = arr[y + 1], arr[y] return arr print(bubbleSort([1, 3, 1, 4, 5, 2, 0])) 三、插入排序...插入排序的代码实现虽然没有冒泡排序选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。

    1.7K30

    算法之旅 | 选择排序

    由于排序的算法有很多,在本次“算法系列”的分享当中,我们先从简单易上手的选择排序开始,其它的排序算法会随后陆续跟大家一起分享。...(譬如在页面中有10000条的数据需要靠JS进行排序,采用不同的算法所消耗的时间差距甚大,直接影响着网站的用户体验) 常见的排序方法 较为常见的排序方法,包括:冒泡排序选择排序、快速排序、二分插入排序等...由于排序的算法有很多,在本次“算法系列”的分享当中,我们先从简单易上手的选择排序开始,其它的排序算法会随后陆续跟大家一起分享。...选择排序的基本原理 先找到序列中最小的数,将它和序列中第一个数交换位置; 接下来,在剩下的序列中继续此操作:找到最小的数,将它和序列中的第二个数交换位置; 依此类推,直到将整个序列排序完成。...temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; 选择排序完整代码 var arr = [9, 8, 3, 1, 2

    62950

    排序——选择排序

    选择排序 --- 简单选择排序 基本思想 每一趟在后面 n-i +1个中选出关键码最小的对象, 作为有序序列的第 i 个记录 算法实现 void SelectSort(SqList &L){ // 对记录序列...L.length]作简单选择排序 for(i = 1; i <= L.length; i++){ // 选择第 i 小的记录,并交换到位 k = i; for(j = i + 1; j <...k]); // 交换 } } 算法分析 时间复杂度:O(n^2) - 移动次数: - 最好情况:0 - 最坏情况:3(n-1) 空间复杂度: O(1) 稳定性: 稳定 --- 树形选择排序...算法分析 含有n个叶子节点的完全二叉树的深度为log2 n+1,则选择排序的每一趟都需作log2n次比较,排序的时间复杂度O(nlog2n)。...改进:简单选择排序没有利用上次选择的结果,是造成速度满的重要原因。如果,能够加以改进,将会提高排序的速度。

    901125

    高职考技能提升教程013期 冒泡排序选择排序

    冒泡排序原理 数据:3、9、6、1 排序: 1.使用相邻两个数值之间两两比较的方式。 2.如果是从小到大排序,比较的时候,如果第一个数值比第二个数值要大,那么两个数值之间进行交换。...1 To 6) As Integer 二:不明确数组元素个数 Dim a() as integer 重新定义个数 Redim a(9) 冒泡排序实战案例 ?...实战过程 分析得到这个高考模拟题是选择排序,就要用到选择排序的思想:如果从大到小排序,那么每一轮选出一个最大值的索引,放到前一个位置。...5.分析得到a(t)表示每一轮的最大值,t表示每一轮比较出来的最大值的索引(这里有选择排序的意思) 6.当输出最小值的时候要注意,寻找到非零的位置的数值的索引,并且在输出的时候不能输出这个索引的值。...3.选择排序是要找到最值的索引,并且要用最值索引进行比较。每一轮找到一个最值。 4.冒泡排序是相邻数值之间的比较,每一轮找到一个最值。 5.学会程序调试的方式,这样能够快速解决问题。

    33220

    选择排序(简单选择排序、堆排序

    选择排序 选择排序的基本思想是:每一趟在待排序元素中选取关键字最小(或最大)的元素加入有序子序列。...简单选择排序 概念 假设排序表为L[1…N],,第i趟排序即从L[1…N]中选择关键字最小的元素与L(i)交换,每一趟排序可以确定一个元素的最终位置,这样经过n-1趟排序就可以使得整个排序表有序...= i) swap(A[i],A[min]); } } 堆排序 概念 堆排序要结合顺序存储的完全二叉树的特性进行学习。...堆排序的思路很简单:首先将存放在L[1…N]中的N个元素建成初始堆,由于堆本身的特点(以大根堆为例),堆顶元素就是最大值。...i;//修改k值,以便继续向下筛选 } } A[k] = A[0]; //被筛选结点的值放入最终位置 } void Heap_Sort(ElemType A[],int len) {//堆排序

    55910
    领券