题目:最小的K个数 题目描述 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 分析:这是一道考察排序的题,借此重新复习下常见的排序 方法一:利用堆排序 建立并维持一个只有k个元素的最大堆,后面的元素进来时先与堆顶元素进行比较 ...
分类:
其他好文 时间:
2018-08-04 23:16:35
阅读次数:
217
目录 冒泡排序 鸡尾酒排序 选择排序 插入排序 二分插入排序 希尔排序 归并排序 堆排序 快速排序 鸡尾酒排序 二分插入排序 希尔排序 我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。 排序算法大体可分为两种: 一种是比较排序,时间复杂度O(nlogn) ~ O(n^2), ...
分类:
编程语言 时间:
2018-08-04 14:37:09
阅读次数:
197
算法和时间复杂度;排序:冒泡排序、选择排序、插入排序、快速排序、堆排序、归并排序、希尔排序、heapq模块
分类:
编程语言 时间:
2018-07-31 17:23:26
阅读次数:
171
排序算法 交换排序类:冒泡排序、快速排序 选择排序类:简单选择排序、堆排序 插入排序类:直接插入排序、希尔排序 冒泡排序 冒泡排序(Bubble Sort),排序的基本思想为两两比较小相邻数据的关键字,如果顺序为反则进行交换,直到没有反序的记录为止。 冒泡排序有多种变化,其三种不同实现的代码如下: ...
分类:
编程语言 时间:
2018-07-28 20:37:08
阅读次数:
137
#!/usr/bin/env python # -*- coding: utf-8 -*- import heapq import copy import datetime import random def get_max_heap(heap, size, root): # 在堆中做结构调整使得父... ...
分类:
编程语言 时间:
2018-07-28 16:47:42
阅读次数:
150
选择排序,冒泡排序,快速排序,归并排序,插入排序,希尔排序,计数排序,桶排序,基数排序 以上是一些常用的排序算法。 选择排序 for(int i = 0; i using namespace std; int n; int a[10] = {9, 19, 7, 2, 4, 5, 6, 8, 10, ...
分类:
编程语言 时间:
2018-07-28 12:03:28
阅读次数:
174
文字描述 堆排序中,待排序数据同样可以用完全二叉树表示, 完全二叉树的所有非终端结点的值均不大于(或小于)其左、右孩子结点的值。由此,若序列{k1, k2, …, kn}是堆,则堆顶元素(或完全二叉树的根)必为序列中n个元素的最小值(或最大值)。 若在输出堆顶的最小值之后,使得剩余n-1个元素的序列 ...
分类:
编程语言 时间:
2018-07-27 20:57:19
阅读次数:
171
举个例子,一位数组,从小到大进行排序。 常见的排序,是冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序、基数排序、桶排序等。 1.冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列,一次比较两个相邻的元素,如果他们的顺序(如从 ...
分类:
编程语言 时间:
2018-07-26 00:21:57
阅读次数:
238
/*算法思想(以大顶堆为例): 1.将长度为n的待排序的数组进行堆有序化构造成一个大顶堆 2.将根节点与尾节点交换并输出此时的尾节点 3.将剩余的n -1个节点重新进行堆有序化 4.重复步骤2,步骤3直至构造成一个有序序列*/ ...
分类:
编程语言 时间:
2018-07-22 15:14:44
阅读次数:
232
通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。 排序算法大体可分为两种: 一种是比较排序,时间复杂度O(nlogn)~O(n^2),主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序 另一种是非比较排序,时间复杂度可以达到O(n),主要有:基数排序,基数排序,桶 ...
分类:
编程语言 时间:
2018-07-21 21:33:03
阅读次数:
164