排序算法
文章平均质量分 76
wujunjlu
这个作者很懒,什么都没留下…
展开
-
排序算法-shaker-改良的冒泡排序算法
说明 请看看之前介绍过的冒泡排序法:void bubsort(int number[]){ int i,j,k,flag=1; for(i=0;i<MAX-1 && flag==1;++i) { flag = 0; for(j=0;j<MAX-i-1;++j) { if(number[j+1] < number[j]) { int temp原创 2012-08-30 23:34:48 · 620 阅读 · 0 评论 -
排序算法-heap排序-改良的交换排序算法
说明 选择排序法的概念简单,每次从未排序部份选一最小值,插入已排序部份的后端,其时间主要花费于在整个未排序部份寻找最小值,如果能让搜寻最小值的方式加快,选择排序法的速率也就可以加快,Heap排序法让搜寻的路径由树根至最后一个树叶,而不是整个未排序部份,因而称之为改良的选择排序法。解法 Heap排序法使用Heap Tree(堆积树),树是一种资料结构,而堆积树是一个二原创 2012-08-31 23:31:45 · 493 阅读 · 0 评论 -
排序算法-基数排序
说明 在之前所介绍过的排序方法,都是属于「比较性」的排序法,也就是每次排序时,都是比较整个键值的大小以进行排序。这里所要介绍的「基数排序法」(radix sort)则是属于「分配式排序」(distribution sort), 基数排序法又称「桶子法」(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些「桶」中,藉以达到排序的作用,基原创 2012-09-02 22:02:57 · 355 阅读 · 0 评论 -
排序算法-合并排序
说明 之前所介绍的排序法都是在同一个阵列中的排序,考虑今日有两笔或两笔以上的资料,它可能是不同阵列中的资料,或是不同档案中的资料,如何为它们进行排序?解法 可以使用合并排序法,合并排序法基本是将两笔已排序的资料合并并进行排序,如果所读入的资料尚未排序,可以先利用其它的排序方式来处理这两笔资料,然后再将排序好的这两笔资料合并。有人问道,如果两笔资料本身就无排序顺序,何原创 2012-09-02 16:30:33 · 421 阅读 · 0 评论 -
排序算法-shell排序-改良的插入排序
说明 插入排序法由未排序的后半部前端取出一个值,插入已排序前半部的适当位置,概念简单但速度不快。排序要加快的基本原则之一,是让后一次的排序进行时,尽量利用前一次排序后的结果,以加快排序的速度,Shell排序法即是基于此一概念来改良插入排序法。解法 Shell排序法最初是D.L Shell于1959所提出,假设要排序的元素有n个,则每次进行插入排序时并不是所有的元素同时进行时原创 2012-08-29 23:21:16 · 388 阅读 · 0 评论 -
排序算法-选择、插入、冒泡算法
说明:选择排序(Selection sort)、插入排序(Insertion sort)与冒泡排序(Bubble sort)这三个排序方式是初学排序所必须知道的三个基本排序方式,它们由于速度不快而不实用(平均与最快的时间复杂度都是O(n2)),然而它们排序的方式确是值得观察与探讨的。解法1、选择排序:将要排序的对象分作两部份,一个是已排序的,一个是未排序的,从后端未排序部份选择一个原创 2012-08-22 23:46:16 · 328 阅读 · 0 评论 -
排序算法-快速排序(三种实现方案)
一、快速排序算法(一)说明 快速排序法(quick sort)是目前所公认最快的排序方法之一(视解题的对象而定),虽然快速排序法在最差状况下可以达O(n2),但是在多数的情况下,快速排序法的效率表现是相当不错的。 快速排序法的基本精神是在数列中找出适当的轴心,然后将数列一分为二,分别对左边与右边数列进行排序,而影响快速排序法效率的正是轴心的选择。 这里原创 2012-09-02 15:37:31 · 851 阅读 · 0 评论