摘要:
排序简介 排序是数据处理中经常使用的一种重要运算,在计算机及其应用系统中,花费在排序上的时间在系统运行时间中占有很大比重;并且排序本身对推动算法分析的发展也起很大作用。目前已有上百种排序方法,但尚未有一个最理想的尽如人意的方法,本章介绍常用的如下排序方法,并对它们进行分析和比较。 1、插入排序(直接插入排序、折半插入排序、希尔排序); 2、交换排序(起泡排序、快速排序); 3、选择排序(直接选... 阅读全文
摘要:
基数排序(Radix Sort)是对箱排序的改进和推广。 1、单关键字和多关键字 文件中任一记录R[i]的关键字均由d个分量 构成。 若这d个分量中每个分量都是一个独立的关键字,则文件是多关键字的(如扑克牌有两个关键字:点数和花色);否则文件是单关键字的, (0≤j<d)只不过是关键字中其中的一位(如字符串、十进... 阅读全文
摘要:
分配排序的基本思想:排序过程无须比较关键字,而是通过"分配"和"收集"过程来实现排序.它们的时间复杂度可达到线性阶:O(n)。 1、箱排序的基本思想 箱排序也称桶排序(Bucket Sort),其基本思想是:设置若干个箱子,依次扫描待排序的记录R[0],R[1],…,R[n-1],把关键字等于k的记录全都装入到第k个箱子里(分配),然后按序号依次将各非空的箱子首尾连接起来(收集)。 【... 阅读全文
摘要:
归并排序(Merge Sort)是利用"归并"技术来进行排序。归并是指将若干个已排序的子文件合并成一个有序的文件。 1、算法基本思路 设两个有序的子文件(相当于输入堆)放在同一向量中相邻的位置上:R[low..m],R[m+1..high],先将它们合并到一个局部的暂存向量R1(相当于输出堆)中,待合并完成后将R1复制回R[low..high]中。 (1)合并过程 合并过程... 阅读全文
摘要:
希尔排序法基本思想 希尔排序(Shell Sort)又称为“缩小增量排序”。是1959年由D.L.Shell提出来的。该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率... 阅读全文
摘要:
插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。 本节介绍两种插入排序方法:直接插入排序和希尔排序。 1.直接插入排序的基本思想 直接插入排序(Straight Insertion Sorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中... 阅读全文
摘要:
1、算法思想 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。 (1) 分治法的基本思想 分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。 (2)快速排序的基本思想 ... 阅读全文
摘要:
冒泡排序(Bubble Sorting)的基本思想是:设待排序n个元素存放在数组a[n]中,无序区范围初始为(a(0),a(1),a(2),...,a[n-1]),冒泡排序方法是在当前无序区内,从最上面的元素a[0]开始,对每两个相邻的元素a[i+1]和a[i](i=0,1,...,n-1)进行比较,且使值较小的元素换至值较大的元素之上(若a[i]>a[i+1],则a[i]和a[i+1]的值互换)... 阅读全文
摘要:
1.堆排序定义 n个关键字序列Kl,K2,…,Kn称为堆,当且仅当该序列满足如下性质(简称为堆性质): (1) ki≤K2i且ki≤K2i+1 或(2)Ki≥K2i且ki≥K2i+1(1≤i≤ ) 若将此序列所存储的向量R[1..n]看做是一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树:树中任一非叶结点的关键字均不大于(或不小于)其左右孩子(若存在... 阅读全文
摘要:
直接选择排序(Straight Selection Sort) 直接选择排序的基本思想 n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果: ①初始状态:无序区为R[1..n],有序区为空。 ②第1趟排序 在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1..1]和R[2..n]分别变为记录个数增加1个的新有... 阅读全文
摘要:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace ExToD { public partia... 阅读全文
摘要:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace ExToD { public partia... 阅读全文
摘要:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms; namespace ExDtoB{ public partial class... 阅读全文
摘要:
猴子选大王问题: 一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1到m的顺序围坐一圈, 从第1开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王 using System; using System.Collections.Generic; using System.Text; namespace ExMonkey { ... 阅读全文
摘要:
约瑟夫环问题: 设有n个人围坐在圆桌周围,现从某个位置m(1≤m≤n)上的人开始报数,报数到k的人就站出来。 继续下一个人,即原来的第k+1个位置上的人,又从1开始报数,再报数到k的人站出来。依此重复下去,直到全部的人都站出来为止 using System; using System.Collections.Generic; using System.Text; namespace ExJos... 阅读全文
摘要:
using System; using System.Collections.Generic; using System.Text; namespace ExArrange { class Arrange { public void Arrange(int n, int r) { int i = 0, j; ... 阅读全文
摘要:
八皇后问题: 八个皇后在排列时不能同在一行、一列或一条斜线上。 在8!=40320种排列中共有92种解决方案 using System; using System.Collections.Generic; using System.Text; namespace ExQueen { class Queen { public void QueenArithmeti... 阅读全文
摘要:
歌德巴赫猜想:任何一个大于6的偶数都可以写为两个素数之和 using System; using System.Collections.Generic; using System.Text; namespace ExGoldbachConjecture { class GoldbachConjecture { public bool IsPrimeNumber(in... 阅读全文
摘要:
eg: 28=1+2+4+7+14 即一个数等于它所有公约数(除本身)之和 using System; using System.Collections.Generic; using System.Text; namespace ExIsWanShu { class IsWanShu { public bool IsWanShu(int Num) ... 阅读全文
摘要:
using System; using System.Collections.Generic; using System.Text; namespace ExPrimeNumber { class PrimeNumber { public bool primeNumber(int n) { bool b = true; ... 阅读全文