首页
学习
活动
专区
工具
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

    算法之旅 | 选择排序

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

    62950

    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

    C语言选择与冒泡排序

    C语言的排序有很多种,目前我只学到了选择和冒泡,这两种排序主要考察的就是for循环的嵌套循环和数组,里面还涉及一个交换算法,本文的顺序是 交换算法,选择排序,冒泡排序 交换算法 交换算法是一个非常常见的算法...选择排序 选择排序也是一种很简单的排序,只不过要用for的嵌套循环和条件语句 算法内容: #include int main(void){ int i,j; //定义循环变量...只到外层跳出循环,数组的元素就依次装着 选择排序就是从a[0]开始依次和后面的元素进行比较,第一遍把a[0]及其以后中最小的筛选出来并将值赋给a[0],第二遍把a[1]及其以后中最小的筛选出来并赋值,依次类推...,内层循环的j=i+1是为了不让a[i]和本身比较而浪费时间,选择排序是每个元素都要和比自己大的元素进行一次比较。...一趟趟的冒泡,排序也就完成了 怎么说呢,冒泡排序就像打地鼠一样,第一遍把最大的地鼠打到最后,然后第二遍把第二大的地鼠打到最后,依次类推。

    2.5K20

    高职考技能提升教程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.学会程序调试的方式,这样能够快速解决问题。

    33320

    C++经典算法题-排序 - 改良的选择排序

    36.排序 - 改良的选择排序 说明 选择排序的概念简单,每次从未排序部份选一最小值,插入已排序部份的后端,其时间主要花费于在整个未排序部份寻找最小值,如果能让搜寻最小值的方式加 快,选择排序的速率也就可以加快...,Heap排序让搜寻的路径由树根至最后一个树叶,而不是整个未排序部份,因而称之为改良的选择排序。...解法 Heap排序使用Heap Tree(堆积树),树是一种资料结构,而堆积树是一个二元树,也就是每一个父节点最多只有两个子节点(关于树的详细定义还请见资料结构书籍),堆积树的 父节点若小于子节点,则称之为最小堆积...如此重覆步骤之后,由于使用一维阵列来储存堆积树,每一次将树叶与树根交换的动作就是将最小值放至后端的阵列,所以最后阵列就是变为已排序的状态。...其实堆积在调整的过程中,就是一个选择的行为,每次将最小值选至树根,而选择的路径并不是所有的元素,而是由树根至树叶的路径,因而可以加快选择的过程, 所以Heap排序才会被称之为改良的选择排序

    56710
    领券