排序算法
tianxuanlove
这个作者很懒,什么都没留下…
展开
-
向前插入排序
向前插入排序:(呵呵,不知道名字叫的对不对) 思想:就像从桌子上摸起扑克一样,摸起一张放到左手,然后把位置牌好,左手的扑克永远是排好序的 证明:开始左手是空的,从桌子上摸一张,显然此时左手上的牌是排好序的,然后摸起第二张,让第二张和第一张比较,如果第一张比第二张小,就把第一张和第二张交换,以此下去,左手的牌永远是排好序的 算法实现:(c语言实现,vc6编译通过) [code="...2011-04-16 12:28:46 · 136 阅读 · 0 评论 -
堆排序
堆排序: 堆定义:分大顶堆和小顶堆 大顶堆的父结点值比子结点大,并且左节点的值大于右结点的值,它可被视为一颗完全二叉树 树的深度为n 则 n-1层以前是被填满的,最后一层从一个结点的左子树开始填和数组对应 如数组 {0, 3, 5, 1, 8, 10, 9} number[0]不在排列范围内 下标从1开始,此时的堆结构为如图: [img]http://dl.iteye.com/upload/...原创 2011-04-17 22:08:37 · 81 阅读 · 0 评论 -
快速排序
快速排序: 思想:就是以一个关键字为枢纽,让数组元素呈现一边小于枢纽,一边大于枢纽,然后然后对左边和右边进行递归进行相同操作,只到左右两边为有序序列,则结束 代码: [code="java"] #include int rapidSort(int number[], int low, int high) { int pivotkey = number[low]; //关键字枢...原创 2011-04-18 22:40:56 · 80 阅读 · 0 评论 -
利用c函数qsort排序
[code="java"] #include #include //qsort函数 有四个参数 //1.代表排序数组的基址 //2.要排序数组的长度,也可以对这个数组的子序列进行排序 //3.数组元素的内存长度 //4.要进行比较的函数 int cmp(const void * a, const void *b) { return *(int *)a - *(int ...原创 2011-06-14 13:46:28 · 120 阅读 · 0 评论