摘要: 归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。如 设有数列{6,202,100,301,38,8,1} 初始状态: [6] [202] [100] [301] [38] [8] [1] 比较次数 i=1 [6 202 ] [ 100 301] [ 8 38] [ 1 ] 3 i=2 [ 6 100 202 301 ] [ 1 8 38 ] 4 i=3 [ 1 6 8 38 100 202 301 ] 4 总计: 11次#include <stdio.h>#inclu 阅读全文
posted @ 2012-07-30 18:49 myth_HG 阅读(142) 评论(0) 推荐(0) 编辑
摘要: #include <stdio.h>#define N 10int main(){ int a[N]; int i,j,temp; for(i=0;i<N;i++) scanf("%d",&a[i]); for(i=0;i<N-1;i++) //冒泡排序的核心代码,通过比较相邻两个,达到排序效果. for(j=1;j<N-i;j++)//可以自己举例子按算法过程来实现 if(a[j]<a[j-1]) { temp=a[j]; a[j]=a[j-1]; a[j-1]=temp; } for(i=0;i<N;i++) print 阅读全文
posted @ 2012-07-30 16:54 myth_HG 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 插入排序,就像好多书上讲的像抓牌时将刚抓的新牌插入手里已经排好序的牌。a数组像牌堆,b数组像已经抓到我们手里的牌#include <stdio.h>#define N 10 //这里是定义要排序的数目int main(){ int a[N],b[N]; //定义数组,a数组用来存输入的数,b数组用来存排序的结果 int i,j; for(i=0;i<N;i++) scanf("%d",&a[i]); b[0]=a[0]; for(i=1;i<N;i++) { j=i; while(j&&b[j-1]>a[i])//这里作 阅读全文
posted @ 2012-07-30 15:56 myth_HG 阅读(122) 评论(0) 推荐(0) 编辑