经典排序算法:插入排序法
让算法会说话,让程序自己告诉我们怎么回事...
分类:
其他好文 时间:
2014-05-18 18:23:08
阅读次数:
252
下面要讲到的8种排序都属于内部排序,既在内存中完成,主要从理论原理方面来分析的。
插入排序①直接插入排序例:六个数12 15 9 20 6 31 24
用直接插入排序,如下图:思路:第一步:从给出的六个数中,随便拿出一个数,比如12,形成一个有序的数据序列(一个数当然是有序的数据序列了,不看12之外...
分类:
其他好文 时间:
2014-05-16 04:05:21
阅读次数:
251
简介:
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。快速排序使用分治法(Divide and conquer)策略来把一个串行(list)...
分类:
其他好文 时间:
2014-05-16 01:35:14
阅读次数:
397
适配器模式
现有一个接口DataOperation定义了排序方法sort(int[]) 和查找方法search(int[], int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法,类BinarySearch 的binarySearch(int[], int)方法实现了二分查找算法。现使用适配器模式设计一个系统,在不修改源代码的情况下将类QuickSort和类BinarySearch的方法适配到DataOperation接口中。绘制类图并编程实现。 (要求实现快速排序和...
分类:
编程语言 时间:
2014-05-15 23:07:47
阅读次数:
423
在Python实践中,我们往往遇到排序问题,比如在对搜索结果打分的排序(没有排序就没有Google等搜索引擎的存在),当然,这样的例子数不胜数。《数据结构》也会花大量篇幅讲解排序。之前一段时间,由于需要,我复习了一下排序算法,并用Python实现了各种排序算法,放在这里作为参考。最简单的排序有三种:...
分类:
编程语言 时间:
2014-05-15 22:42:31
阅读次数:
463
using System;using System.Collections.Generic;using
System.Linq;using System.Text;namespace MegreSort{ class Program { static void
Main(s...
分类:
其他好文 时间:
2014-05-15 09:21:59
阅读次数:
171
算法原理:
第一趟:从j=0开始,比较相邻的两个数a[j]和a[j+1],如果a[j]>a[j+1],则交换他俩的位置,这样会将大的数放在后面。每比较一次让j++,当j=length-1时终止。
这样一趟走完,最后面的数应该是最大数。
那么第二趟,还是从0开始,只不过这次j的终止条件是j=length-2。第二趟走完,最后两个数应该是数组中最大的两个数并且有序排列。
重复若干趟,直到j的终...
分类:
其他好文 时间:
2014-05-15 07:56:49
阅读次数:
238
第一、任意一个比较排序算法在最好情况下的时间复杂度也是O(nlogN);
第二、计数排序
假设n个输入元素的每一个都是介于0到k之间的整数,计数排序可用,需要临时存储空间O(K),时间复杂度是O(n).
#include
using namespace std;
void countingSort(int *A,int len,int max)
{
if(A==NULL || len<...
分类:
其他好文 时间:
2014-05-14 23:58:58
阅读次数:
382
数据结构中的排序算法。排序算法的相关知识:(1)排序的概念:所谓排序就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来。(2)稳定的排序方法:在待排序的文件中,若存在多个关键字相同的记录,经过排序后这些具有相同关键字的记录之间的相对次序保持不变,该排序方法是稳定的。相反,如果发生改变,这...
分类:
编程语言 时间:
2014-05-14 23:06:00
阅读次数:
725