arr=[9,2,3,5,1,7,8,6,4,0] for i in range(len(arr)-1):#用i与j相比,所以i少一位 min=i#标志 for j in range(i+1,len(arr)): if arr[min]>arr[j]: min=j if min!=i: arr[i]... ...
分类:
编程语言 时间:
2019-10-08 10:58:06
阅读次数:
86
本文将基于C语言,依次介绍八大排序算法:冒泡排序、选择排序、插入排序、希尔排序、堆排序、快速排序、归并排序、基数排序,并对其性能作对比。 ...
分类:
编程语言 时间:
2019-10-07 17:22:03
阅读次数:
108
一、排序算法的分类 1. 比较排序 VS 非比较排序 是否需要比较两个元素的大小才能进行排序 2. 交换排序 VS 插入排序 VS 选择排序 交换:每次只调换两个元素之间的位置 插入:遍历到的元素放入之前维护的已完成排序的序列中 选择:选择剩余元素中最大或最小的元素 3. 排序算法的稳定度 如果排序 ...
分类:
编程语言 时间:
2019-10-07 13:28:09
阅读次数:
81
https://blog.csdn.net/qq_19446965/article/details/102290460 快选希堆不稳(这几种排序是不稳定的), 归选基堆不变(这几种排序的时间复杂度不变化) 元素的时间复杂度与初始序列无关的是:口诀:一堆(堆排序)海归(归并排序)选(选择排序)基友 ...
分类:
编程语言 时间:
2019-10-07 11:34:47
阅读次数:
97
排序算法 1 冒泡排序 相邻元素两辆比较,大的往后放.第一次将数据遍历完成之后,最大值就出现在了最大的索引处.同理,即可得到一个排好序的数组. 过程图解: 代码实现 第一次遍历代码 完整代码 2 选择排序 选择排序改进了冒泡排序,每次遍历只做一次交换.例如:每次遍历都找到最大值,将最大值放到最后的位 ...
分类:
编程语言 时间:
2019-10-06 11:13:13
阅读次数:
81
public static void kuaipai(int[] arr, int lift, int right) {//快速排序 int l = lift; int r = right; int p = arr[(lift + right) / 2]; int temp = 0; while ( ...
分类:
编程语言 时间:
2019-10-04 18:38:33
阅读次数:
120
排序是数据处理中十分常见的操作,现代高级语言都有现成的n种排序算法。但了解它们的代码,对计算机思维有帮助。 简单选择排序 每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止,简单选择排序是不稳定排序。 无论数组原始排列如何,比较次数都不变;变的是交换次数。完全有序 ...
分类:
编程语言 时间:
2019-10-03 22:21:44
阅读次数:
119
稳定性: 稳定:冒泡排序,插入排序,归并排序、桶排序、计数排序、基数排序 非稳定:选择排序、快速排序、堆排 稳定性的优势 稳定性可保证双属性条件下,按第一个属性排序后,再按照第二个属性排序,排完后属性2相等的元素,按属性1的顺序排列。 工程中 长序列: 基础类型:快排(非稳定) 自定义属性:堆排(稳 ...
分类:
编程语言 时间:
2019-10-03 21:42:17
阅读次数:
94
1、排序过程: 将待排序列存放在数组a[n]中。 第一次从a[1]开始,查找比a[0]小的元素,如果存在此元素,则将元素的位置信息记录下来,运用此信息判断查找到的元素是否为a[0],如果不是,则将a[0]与此最小元素交换值的大小。 第二次从a[2]开始,查找比a[1]小的元素....... .... ...
分类:
编程语言 时间:
2019-10-03 20:19:18
阅读次数:
69
冒泡排序算法是时间复杂度为O(N^2),空间复杂为O(1),是稳定的排序算法。所谓的稳定性就是指,在原始的数组中相等的元素的下表顺序在 排序之后不会改变。 冒泡排序算法的每一轮都是将最大的元素后移,第一轮排序结束后,最后一位是最大的,第二轮结束后,倒数第二位的元素是最大的,依次类推,最后 将会得到一 ...
分类:
编程语言 时间:
2019-10-03 16:17:36
阅读次数:
63