第一种思路是计数排序,不过需要两趟才能完成。第二种思路是定义两个index,每次将红色交换至最前,将蓝色交换至最后,白色保持不变,很巧妙的思路。 void sortColors(int A[], int n) { int counts[3] = { 0 }; for (int i = 0; i < ...
分类:
其他好文 时间:
2016-07-13 09:21:33
阅读次数:
176
本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序、希尔排序) 2)交换排序(冒泡排序、快速排序) 3)选择排序(直接选择排序、堆排序) 4)归并排序 5)分配排序(基数排序) 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 平均速度最快:快速排序 不稳定:快 ...
分类:
编程语言 时间:
2016-07-12 20:59:49
阅读次数:
243
不好想,用桶排序解决。 int findMissingPostive(int A[], int n) { bucket_sort(A, n); for (int i = 0; i < n; i++) if (A[i] != i + 1) return i + 1; return n + 1; } v ...
分类:
其他好文 时间:
2016-07-12 18:56:13
阅读次数:
118
题意: 2e6个数,按从小到大的顺序输出; 思路: 计数排序; AC代码: ...
分类:
编程语言 时间:
2016-07-12 10:25:40
阅读次数:
173
日常操作中常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还有基数排序、鸡尾酒排序、桶排序、鸽巢排序、归并排序等。 一、冒泡排序 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有 ...
分类:
编程语言 时间:
2016-07-02 14:31:48
阅读次数:
170
#include
#include
#include
#define NR(x) sizeof(x)/sizeof(x[0])
//计数排序
//排序成功返回0,否则返回-1
//局限:只能用于整型或者那些可以用整型来表示的数据集合
//优点:速度快,稳定
/*
利用计数排序将数组data中的整数进行排序。
data中的元素个数由sized决定。
参数k为data最大的整数加1...
分类:
编程语言 时间:
2016-06-28 11:05:57
阅读次数:
157
这道题目是,给你一组乱序非负整数,求排好序后,这组数的连续两个数的最大差值。 例如,3,9,10,2,8,4,1。则最大差值是4。 一开始就考虑到可能要使用桶排序,但是最开始的思路是按照数的最高位的值大小来排序,这个思路并不行。 后来上网查了下答案。一开始没看懂。 大概思路是: 另max,min分别 ...
分类:
其他好文 时间:
2016-06-27 15:26:35
阅读次数:
113
课本源码部分 第10章 内部排序 - 基数排序 ——《数据结构》-严蔚敏.吴伟民版 源码使用说明 链接??? 《数据结构-C语言版》(严蔚敏,吴伟民版)课本源码+习题集解析使用说明 课本源码合辑 链接??? 《数据结构》课本源码合辑 习题集全解析 链接??? 《数据结构题集》习题解析合辑 本源码引入 ...
分类:
编程语言 时间:
2016-06-22 23:24:16
阅读次数:
181
1. 交换排序 (1)冒泡排序 (2)快速排序 2. 选择排序 (1)直接选择排序 (2)堆排序 3. 插入排序 (1)直接插入排序 (2)希尔排序 4. 合并排序 (1)合并排序 5. 非比较排序 (1)计数排序 (2)桶排序 (3)基数排序 ...
分类:
编程语言 时间:
2016-06-22 20:13:57
阅读次数:
207