题目链接:sort-colors
import java.util.Arrays;
/**
*
Given an array with n objects colored red, white or blue, sort them so that objects of the same color are adjacent, with the colors in the or...
分类:
其他好文 时间:
2015-03-20 16:32:00
阅读次数:
156
插入排序的工作机理和打牌时,整理手中的排做法差不多。在开始摸牌的是,我们的左手是空的,排名朝下放在桌上,接着,一次从桌上摸一张牌,并将它插入左手排的正确位置上。为了找到这张牌的正确位置,要将他和手中的没一张哦从右到左进行比较,无论什么时候,左手中的牌都是排好序的。(出自:算法导论)
例如:5,4,6,2,7,3,4,1
5—>4,5—>4,5,6—>2,4,5,6—>2,4,5,6,7—->2,...
分类:
编程语言 时间:
2015-03-16 12:56:06
阅读次数:
139
冒泡排序
算法分析
时间复杂度
若文件的初始状态是正序的,一趟扫描即可完成排序。所需的关键字比较次数
和记录移动次数
均达到最小值:
,
。
所以,冒泡排序最好的时间复杂度为
。
若初始文件是反序的,需要进行
趟排序。每趟排序要进行
次关键字的比较(1≤i≤n-1),且每次比较都必...
分类:
编程语言 时间:
2015-03-15 16:51:20
阅读次数:
156
如果归并排序中待归并的两个相邻序列分别Wi是r[start]~r[mid]和r[mid+1]~r[end],需要将其归并成一个新序列r1[start]~r1[end]:void merge(int r[], int r1[], int start, int mid, int end)
{
int i = start, j = mid + 1, k = start;
while (i...
分类:
编程语言 时间:
2015-03-09 19:12:33
阅读次数:
164
选择排序基本思路:从所有元素中选择一个最小元素a[i]放在a[0](即让最小元素a[i]与a[0]交换),作为第一轮;第二轮是从a[1]开始到最后的各个元素中选择一个最小元素,放在a[1]中;……依次类推。n个数要进行(n-1)轮。比较的次数与冒泡法一样多,但是在每一轮中只进行一次交换,比冒泡法的交换次数少,相对于冒泡法效率高。
/**
*
*/
package com.zimo.al...
分类:
编程语言 时间:
2015-03-05 09:18:08
阅读次数:
162
快速排序是对冒泡法排序的一种改进。快速排序算法 的基本思想是:将所要进行排序的数分为左右两个部分,其中一部分的所有数据都比另外一 部分的数据小,然后将所分得的两部分数据进行同样的划分,重复执行以上的划分操作,直 到所有要进行排序的数据变为有序为止。可能仅根据基本思想对快速排序的认识并不深,接下来以对...
分类:
编程语言 时间:
2015-03-04 16:30:55
阅读次数:
185
选择排序是排序算法的一种,这里以从小到大排序为例进行讲解。基本思想及举例说明选择排序(从小到大)的基本思想是,首先,选出最小的数,放在第一个位置;然后,选出第二小的数,放在第二个位置;以此类推,直到所有的数从小到大排序。在实现上,我们通常是先确定第i小的数所在的位置,然后,将其与第i个数进行交换。下...
分类:
编程语言 时间:
2015-03-04 16:20:24
阅读次数:
134
冒泡排序是排序算法的一种,思路清晰,代码简洁,常被用在大学生计算机课程中。“冒泡”这个名字的由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。这里以从小到大排序为例进行讲解。基本思想及举例说明冒泡排序的基本思想就是不断比较相邻的两个数,让较大的元素不断地往后移。经过一轮比较,就选出最大的数...
分类:
编程语言 时间:
2015-03-04 14:31:26
阅读次数:
177
为加深排序算法的理解,总结一下常见的排序算法。
排序算法的大致分类:(网上找的图)
具体的实现:
直接插入排序:
基本原理为将待排序的数组分为有序区域和无序区域,每次将无序区域的一个数值插入到有序区域并排好序。最终实现排序。
void InsertSort(int k[],int n)
{
int i, j, temp;
for(i = 1; i < n; i...
分类:
编程语言 时间:
2015-02-27 20:18:02
阅读次数:
220
堆优先队列:特殊的”队列”,取出元素的顺序是依照元素的优先权(关键字)大小,而不是元素进入队列的先后顺序
堆是优先队列的完全二叉树表示。
堆的两个特性:
①结构性:用数组表示的完全二叉树
②有序性:任意结点的关键字是其子树所有结点的最大值,叫最大堆(或最小值,叫最小堆)(注意从根结点到任意结点路径上结点序列的有序性)下面举一个最大堆的例子。
/** 最大堆的操作 */
typedef st...
分类:
编程语言 时间:
2015-02-17 22:21:37
阅读次数:
231