摘要: 摘要: 快速排序:确定一个枢纽元,一次遍历后将数组划分成两个部分,第一部分均比枢纽元小,第二部分都比枢纽元大,然后对这两个数组进行快速排序,是一种递归的方法 平均运行时间O(Nlog(N)),最坏运行时间O(N^2)最坏情形:对于预排序的序列。对与枢纽元相等的元素处理: i,j都停止:会比较相等元素,但是可以划分成长度相当的两个子数组 i,j都不停止,不会比较相等元素,但是可能产生长度不平衡的两个子数组(与枢纽元相等的元素较多时)枢纽元的选取:1. 选取第一个元素做枢纽元:对于(部分)预排序的序列运行时间O(N^2)2. 随机生成枢纽元:能避免上述问题,但是产生枢纽元的代价高3. 三数中值分. 阅读全文
posted @ 2009-04-22 16:56 liyuxia713 阅读(189) 评论(0) 推荐(0) 编辑
摘要: shell排序是对直接插入方法的改进方法.1/**//*-------------------------------------------------------------------------------------2Shell_sort.h3shell排序是对直接插入方法的改进,它并不是对相邻元素进行比较,而是对一定间隔的元素比较.4选择增量序列的几种方法:(为方便,本例采用第一种增量序列)51.h[1]=size,h[k]=h[k-1]/2.6最坏运行时间为O(N^2).7最坏情形:数组长度为2^n,数组的偶数位置上同是一个数,奇数位置上也同是一个数,8且比偶数位置的小。此时到最 阅读全文
posted @ 2009-04-22 16:50 liyuxia713 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 冒泡排序和改进的冒泡排序1/**//*-------------------------------------------------------------------------------------------2Bubble_sort.h3冒泡排序:时间复杂度为O(N^2)4改进的冒泡排序:时间复杂度仍为O(N^2)5一般的冒泡排序方法有可能会在已经排好序的情况下继续比较,改进的冒泡排序6设置了一个哨兵flag,如果一次for循环没有进行交换,则元素已经排好序,由哨兵控制退出循环。7--------------------------------------------------- 阅读全文
posted @ 2009-04-22 16:46 liyuxia713 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 声明待排序元素类型1/**//*--------------------------2typedef.h3方便修改待排序元素类型4-------------------------------------*/5#ifndefTYPEDEF_H6#defineTYPEDEF_H78typedefintT;910#endif插入排序:1/**//*---------------------------------------------------------------------------------------2Insertion_sort.h3直接插入排序4对以数组形式给出的元素排序5时 阅读全文
posted @ 2009-04-22 16:44 liyuxia713 阅读(230) 评论(0) 推荐(0) 编辑