• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
遥远的梦
--心有多大, 世界就有多大
博客园    首页    新随笔    联系   管理    订阅  订阅
2008年9月10日
数据结构-排序: 各种排序算法全分析
摘要: 排序简介 排序是数据处理中经常使用的一种重要运算,在计算机及其应用系统中,花费在排序上的时间在系统运行时间中占有很大比重;并且排序本身对推动算法分析的发展也起很大作用。目前已有上百种排序方法,但尚未有一个最理想的尽如人意的方法,本章介绍常用的如下排序方法,并对它们进行分析和比较。 1、插入排序(直接插入排序、折半插入排序、希尔排序); 2、交换排序(起泡排序、快速排序); 3、选择排序(直接选... 阅读全文
posted @ 2008-09-10 17:01 子逸 阅读(13757) 评论(1) 推荐(1)
数据结构-算法: 分配排序(基数分配排序法)
摘要: 基数排序(Radix Sort)是对箱排序的改进和推广。 1、单关键字和多关键字 文件中任一记录R[i]的关键字均由d个分量 构成。 若这d个分量中每个分量都是一个独立的关键字,则文件是多关键字的(如扑克牌有两个关键字:点数和花色);否则文件是单关键字的, (0≤j<d)只不过是关键字中其中的一位(如字符串、十进... 阅读全文
posted @ 2008-09-10 16:57 子逸 阅读(2272) 评论(0) 推荐(0)
数据结构-算法: 分配排序(箱分配排序)
摘要: 分配排序的基本思想:排序过程无须比较关键字,而是通过"分配"和"收集"过程来实现排序.它们的时间复杂度可达到线性阶:O(n)。 1、箱排序的基本思想 箱排序也称桶排序(Bucket Sort),其基本思想是:设置若干个箱子,依次扫描待排序的记录R[0],R[1],…,R[n-1],把关键字等于k的记录全都装入到第k个箱子里(分配),然后按序号依次将各非空的箱子首尾连接起来(收集)。 【... 阅读全文
posted @ 2008-09-10 16:56 子逸 阅读(1860) 评论(0) 推荐(0)
数据结构-排序: 两路归并排序算法
摘要: 归并排序(Merge Sort)是利用"归并"技术来进行排序。归并是指将若干个已排序的子文件合并成一个有序的文件。 1、算法基本思路 设两个有序的子文件(相当于输入堆)放在同一向量中相邻的位置上:R[low..m],R[m+1..high],先将它们合并到一个局部的暂存向量R1(相当于输出堆)中,待合并完成后将R1复制回R[low..high]中。 (1)合并过程 合并过程... 阅读全文
posted @ 2008-09-10 16:50 子逸 阅读(11907) 评论(2) 推荐(1)
数据结构-算法: 插入排序(希尔排序法)
摘要: 希尔排序法基本思想 希尔排序(Shell Sort)又称为“缩小增量排序”。是1959年由D.L.Shell提出来的。该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率... 阅读全文
posted @ 2008-09-10 16:49 子逸 阅读(3111) 评论(0) 推荐(0)
数据结构-排序: 插入排序(直接插入排序法)
摘要: 插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。 本节介绍两种插入排序方法:直接插入排序和希尔排序。 1.直接插入排序的基本思想 直接插入排序(Straight Insertion Sorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中... 阅读全文
posted @ 2008-09-10 16:44 子逸 阅读(8675) 评论(0) 推荐(0)
数据结构-排序: 交换排序(快速排序法)
摘要: 1、算法思想 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。 (1) 分治法的基本思想 分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。 (2)快速排序的基本思想 ... 阅读全文
posted @ 2008-09-10 16:38 子逸 阅读(1942) 评论(1) 推荐(0)
数据结构-排序: 交换排序(冒泡排序法)
摘要: 冒泡排序(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]的值互换)... 阅读全文
posted @ 2008-09-10 16:35 子逸 阅读(5982) 评论(0) 推荐(0)
数据结构-排序: 选择排序(堆选择排序法)
摘要: 1.堆排序定义 n个关键字序列Kl,K2,…,Kn称为堆,当且仅当该序列满足如下性质(简称为堆性质): (1) ki≤K2i且ki≤K2i+1 或(2)Ki≥K2i且ki≥K2i+1(1≤i≤ ) 若将此序列所存储的向量R[1..n]看做是一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树:树中任一非叶结点的关键字均不大于(或不小于)其左右孩子(若存在... 阅读全文
posted @ 2008-09-10 16:32 子逸 阅读(2457) 评论(0) 推荐(0)
数据结构-排序: 选择排序(直接选择排序法)
摘要: 直接选择排序(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个的新有... 阅读全文
posted @ 2008-09-10 16:27 子逸 阅读(2078) 评论(0) 推荐(0)
常用算法(C#): 二进制数转换为八进制, 十六进制数的算法
摘要: 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... 阅读全文
posted @ 2008-09-10 09:56 子逸 阅读(3067) 评论(0) 推荐(0)
常用算法(C#): 二进制,八进制,十六进制数转换为十进制数的算法
摘要: 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... 阅读全文
posted @ 2008-09-10 09:48 子逸 阅读(2774) 评论(0) 推荐(0)
常用算法(C#): 十进制数转换为二进制,八进制,十六进制数的算法
摘要: 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... 阅读全文
posted @ 2008-09-10 09:42 子逸 阅读(6542) 评论(6) 推荐(1)
常用算法(C#): 猴子选大王问题
摘要: 猴子选大王问题: 一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1到m的顺序围坐一圈, 从第1开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王 using System; using System.Collections.Generic; using System.Text; namespace ExMonkey { ... 阅读全文
posted @ 2008-09-10 09:32 子逸 阅读(3059) 评论(1) 推荐(1)
常用算法(C#): 约瑟夫环问题
摘要: 约瑟夫环问题: 设有n个人围坐在圆桌周围,现从某个位置m(1≤m≤n)上的人开始报数,报数到k的人就站出来。 继续下一个人,即原来的第k+1个位置上的人,又从1开始报数,再报数到k的人站出来。依此重复下去,直到全部的人都站出来为止 using System; using System.Collections.Generic; using System.Text; namespace ExJos... 阅读全文
posted @ 2008-09-10 09:27 子逸 阅读(3682) 评论(0) 推荐(1)
常用算法(C#): 用回溯法找出 n 个自然数中取 r 个数的全排列
摘要: using System; using System.Collections.Generic; using System.Text; namespace ExArrange { class Arrange { public void Arrange(int n, int r) { int i = 0, j; ... 阅读全文
posted @ 2008-09-10 09:24 子逸 阅读(1326) 评论(1) 推荐(0)
常用算法(C#):八皇后问题
摘要: 八皇后问题: 八个皇后在排列时不能同在一行、一列或一条斜线上。 在8!=40320种排列中共有92种解决方案 using System; using System.Collections.Generic; using System.Text; namespace ExQueen { class Queen { public void QueenArithmeti... 阅读全文
posted @ 2008-09-10 09:23 子逸 阅读(2247) 评论(0) 推荐(0)
常用算法(C#): 歌德巴赫猜想的算法
摘要: 歌德巴赫猜想:任何一个大于6的偶数都可以写为两个素数之和 using System; using System.Collections.Generic; using System.Text; namespace ExGoldbachConjecture { class GoldbachConjecture { public bool IsPrimeNumber(in... 阅读全文
posted @ 2008-09-10 09:11 子逸 阅读(813) 评论(0) 推荐(0)
常用算法(C#): 判断一个数是否完数
摘要: 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) ... 阅读全文
posted @ 2008-09-10 09:04 子逸 阅读(2259) 评论(0) 推荐(0)
常用算法(C#): 判断素数的算法
摘要: using System; using System.Collections.Generic; using System.Text; namespace ExPrimeNumber { class PrimeNumber { public bool primeNumber(int n) { bool b = true; ... 阅读全文
posted @ 2008-09-10 08:59 子逸 阅读(2173) 评论(0) 推荐(0)
常用算法(C#): 求一个数的最小公倍数
摘要: using System; using System.Collections.Generic; using System.Text; namespace ExMinGongBeiShu { class MinGongBeiShu { public float minGongBeiShu(int n1, int n2) { in... 阅读全文
posted @ 2008-09-10 08:57 子逸 阅读(2502) 评论(0) 推荐(0)
常用算法(C#): 求一个数的最大公约数
摘要: using System; using System.Collections.Generic; using System.Text; namespace ExMaxGongYueShu { class MaxGongYueShu { public float maxGongYueShu(int n1,int n2) { int... 阅读全文
posted @ 2008-09-10 08:56 子逸 阅读(2883) 评论(0) 推荐(0)
常用算法(C#): 计算10! 的值.
摘要: using System; using System.Collections.Generic; using System.Text; namespace ExFactorial { class Factorial { public double factorial(int num) { switch (num) ... 阅读全文
posted @ 2008-09-10 08:55 子逸 阅读(1503) 评论(0) 推荐(0)
常用算法(C#): 计算 1+2(2次方)+3(3次方)+...+n(n次方)的值
摘要: using System; using System.Collections.Generic; using System.Text; namespace ExSum { class Sum { public long sum(int num) { long sum = 0; for (int i = 1... 阅读全文
posted @ 2008-09-10 08:53 子逸 阅读(5535) 评论(0) 推荐(0)
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3