自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 W. :查找最大值和最小值,9.1,P108

<br />//author: W.<br />//查找最大值和最小值,9.1,P108<br />//比较次数:3(n/2)(向下取整)<br />//<br />//取出一对输入元素(a,b),将其进行比较,得到a >= b,然后把较大者a与当前的最大元素max进行比较,较小者b于当前最小元素min进行比较,这样处理2个输入元素需要进行3次比较即可。<br />//初始max和min:当输入个数n为奇数时,则设第一个元素既是max又是min.则查找共需比较次数为3(n/2)(向下取整

2010-10-20 11:01:00 469

原创 W. :基数排序.8.3,P100

//author: W.//基数排序.8.3,P100//基数排序的条件:给定n个d位数,每一个数位可以取k种可能的值。这种排序也可以适合于有d的key组合来标识一个数据,比如用年月日来标识一条日程记录,或者数据库中用多个关键字标识一条记录.//基数排序是对d位数,从后往前进行排序,并且使用的中间对每一位进行的排序算法必须是稳定排序算法。//该例中定义以下数据结构作为输入数据的条件。该例子模拟对日期的排序,这里没有检测日期的合法性.#define MAX_DAY 31        

2010-10-19 11:14:00 392

原创 W. :计数排序.8-2,P98

//author: W.//计数排序.8-2,P98//当k=O(n)时,时间复杂度为O(n)//输入:n个输入的元素中每一个都是介于0~k之间的整数,此处k为某个整数.即0 //该方法的总体思路是:用一个中间数组C来记录每个A[i]应该在已排序的数组中的位置,A[i]在已排序中的位置即计算出A[0]~A[n]中小于等于A[i]的个数。//通过2次循环,第一次循环后C[A[i]]记录A[0]~A[n]中值为A[i]的元素的个数,第二次循环后C[i]记录A[0]~A[n]中值小于等于A[i

2010-10-18 14:20:00 819

原创 W. :Hoare快速排序(利用分治法). 7-1,P94

<br />//author: W.<br />//Hoare快速排序(利用分治法). 7-1,P94<br />//平均情况时间复杂度为O(nlgn),最坏情况为O(n^2)<br />//快速排序是就地排序,平均性能好,且常数因子很小,但最坏情况性能差,不过快排的平均情况与最佳情况运行时间很接近,如果输入是随机的,那么出现最坏情况的概率很小。<br />//该排序使用的是思考题7-1提供的Hoare的PARTITION<br /><br /><br />#include <stdio

2010-10-18 08:05:00 650

原创 W. :快速排序(利用分治法). 7.1,P85

//author: W.//快速排序(利用分治法). 7.1,P85//平均情况时间复杂度为O(nlgn),最坏情况为O(n^2)//快速排序是就地排序,平均性能好,且常数因子很小,但最坏情况性能差,不过快排的平均情况与最佳情况运行时间很接近,如果输入是随机的,那么出现最坏情况的概率很小。#include //返回q的位置,使得A[p]~A[q-1] int PARTITION(int A[], int p, int r){    int x = A[r];    int

2010-10-15 15:25:00 414

原创 W. :利用最小优先级队列实现对k个已序队列的合并排序。习题6.5-8

//author: W.//利用最小优先级队列实现对k个已序队列的合并排序。6.5-8,P82//时间复杂度:O(nlgk)//因为优先级队列的操作时间为lgk,共需要n次操作,所以是O(nlgk)//算法思想:由于k个队列是已序的,那么取出每个队列中的最小元素组建成最小堆,该最小堆包含k个元素//每次取出最小堆的堆顶元素,即最小值,放入输出队列中。//然后二种情况:1)该元素不是其所属队列的最末元素,则将该元素所属的队列中下一个元素插入最小堆,则最小堆仍为k个元素//     

2010-10-14 18:18:00 614

原创 W. :最大优先级队列

//author: W.//最大优先级队列,P80.//一个最大优先级队列包含以下几个操作//INSERT(S, x) :把元素x插入集合S. 时间复杂度O(lgn)//MAXIMUM(S):返回S中具有最大关键字的元素.时间复杂度O(1)//EXTRACT-MAX(S):去掉并返回S中的具有最大关键字的元素.时间复杂度O(lgn)//INCREASE-KEY(S, x, k):将元素x的关键字的值增加到k,这里k值不能小于x的原关键字的值.时间复杂度O(lgn)//可见优先级队

2010-10-14 15:13:00 268

原创 W. :堆排序

<br />//author: W.<br />//HEAP-SORT,堆排序,P78.<br />//时间复杂度:O(nlgn)<br /><br />#include <stdio.h><br /><br />//输入数组A和位置i,条件left(i)和right(i)给根的子树已经是最大堆<br />//输出A,此时以位置i为根的子树是一个最大堆<br />//该方式使用递归实现,先对i, left(i), right(i)处理,找出其中最大的。如果i不是最大的,则说明对这三个

2010-10-13 19:51:00 237

原创 W. :BUILD-MAX-HEAP,构建一个最大堆.6-3中描述的子过程,P76.

<br />//author: W.<br />//BUILD-MAX-HEAP,构建一个最大堆.6-3中描述的子过程,P76.<br />//时间复杂度:O(n) //见P77的分析<br /><br />#include <stdio.h><br /><br />//输入数组A和位置i,条件left(i)和right(i)给根的子树已经是最大堆<br />//输出A,此时以位置i为根的子树是一个最大堆<br />//该方式使用递归实现,先对i, left(i), right(i)

2010-10-13 17:48:00 1239

原创 W. :MAX-HEAPIFY,6-2中描述的子过程,P75.

<br />//author: W.<br />//MAX-HEAPIFY,6-2中描述的子过程,P75.<br />//时间复杂度:O(lgn)<br /><br />#include <stdio.h><br /><br />//输入数组A和位置i,条件left(i)和right(i)给根的子树已经是最大堆<br />//输出A,此时以位置i为根的子树是一个最大堆<br />//该方式使用递归实现,先对i, left(i), right(i)处理,找出其中最大的。如果i不是最大的

2010-10-13 16:56:00 889

原创 W. :利用合并排序和二分查找实现习题2.3-7

<br />//author: W.<br />//利用合并排序和二分查找实现习题2.3-7。<br />//时间复杂度:O(nlgn) <br /><br />#include <stdio.h><br />#include <stdlib.h><br />void merge(int a[], int p, int q, int r)<br />{<br />    int n1 = q - p + 1;<br />    int n2 = r - q;<br /> 

2010-10-09 18:26:00 560

原创 W. :递归版插入排序

<br />//author: W.<br />//递归版插入排序. 2.3-4 P22<br />//时间复杂度: O(n^2)<br />#include <stdio.h><br /><br />//这个查找并不是找到与key相等的位置,而是找到第一个大于key的位置<br />//二分查找的时间复杂度是O(lgn)<br />//利用循环不变式方式进行迭代方式的查找<br />int binary_search_index1(int a[], int begin, int

2010-10-09 17:28:00 362

原创 W. :合并排序

<br />//author: W.<br />//合并排序. 2.3-2 P22<br />//时间复杂度:O(nlgn) <br /><br />#include <stdio.h><br />#include <stdlib.h><br />//#define USE_CONTINUE<br />void merge(int a[], int p, int q, int r)<br />{<br />    int n1 = q - p + 1;<br />   

2010-10-09 15:02:00 245

原创 W. :选择排序

<br />//author: W.<br />//选择排序. 2.2-2 P16<br />//时间复杂度:O(n^2) 最佳和最坏情况都是O(n^2)<br />#include <stdio.h><br /><br />void selection_sort(int a[], int length)<br />{<br />    int i;<br />    int j;<br />    int key_index;<br />    int temp;<br

2010-10-09 09:16:00 200

原创 W. :插入排序

<br />//author: W.<br />//插入排序。2.1 P10 <br />//时间复杂度:O(n^2)<br />#include <stdio.h><br /><br />//函数执行目标:使得a[0]~a[length]为升序排列<br />void insertion_sort(int a[], int length)<br />{<br />    int key = 0; <br />    int j; //外循环,循环不变式中的循环部分<br />   

2010-10-09 08:16:00 192

原创 lijing:q 2.1-2降序排列

<br /><br /> <br />#include <stdio.h><br />#include <stdlib.h><br /> <br />int <br />main(int argc, char * argv[])<br />{<br />    int array[] = {3,6,4,8,1,0};<br />    int for_count;<br />    int key = 0;<br />    int i;<br /> <br />    for (for_count = 1

2010-10-08 15:45:00 279

原创 lijing:插入排序

<br /> <br />#include <stdio.h><br />#include <stdlib.h><br /> <br />int <br />main(int argc, char * argv[])<br />{<br />    int array[] = {3,6,4,8,1,0};<br />    int for_count;<br />    int key = 0;<br />    int i;<br /> <br />    for (for_count = 1; for_

2010-10-08 15:32:00 185

原创 test

test

2010-10-08 12:56:00 178

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除