[C语言中数组的排序方法中]选择排序的原理是,每次从待排序数字中挑选出最大(最小)数字,放在有序序列的末尾。实际操作中,只需要在这个数组中将挑出来的数字与前面的数字交换即可。 例如: 4 1 5 2 3 找到最小...+阅读
c语言快排方法。要详细解析悬赏随意可追加
#include
只是写个总注释。你看不懂在问我
C快速排序法的代码!
///
C语言下的使用归并改进的快速排序源代码程序谢谢拉急需啊
在内部排序中,通常采用的是2-路归并排序。即:将两个位置相邻的记录有序子序列归并为一个记录的有序序列。
Merge()实现了一次归并 :
void Merge(RecType R[],int low,int mid,int high)
{ RecType *R1;
int i=low,j=mid+1,k=0;
/*k是R1的下标,i、j分别为第1、2段的下标*/
R1=(RecType *)malloc((high-low+1)*sizeof(RecType));
while (i<=mid & j<=high)
if (R[i].key<=R[j].key) /*将第1段中的记录放入R1中*/
{ R1[k]=R[i]; i++;k++; }
else /*将第2段中的记录放入R1中*/
{ R1[k]=R[j]; j++;k++; }
while (i<=mid) /*将第1段余下部分复制到R1*/
{ R1[k]=R[i]; i++;k++; }
while (j<=high) /*将第2段余下部分复制到R1*/
{ R1[k]=R[j]; j++;k++; }
for (k=0,i=low;i<=high;k++,i++) /*将R1复制回R中*/
R[i]=R1[k];
}
MergePass()实现了一趟归并
void MergePass(RecType R[],int length,int n)
{ int i;
for (i=0;i+2*length-1 Merge(R,i,i+length-1,i+2*length-1); if (i+length-1 Merge(R,i,i+length-1,n-1); /*归并这两个子表*/ } 二路归并排序算法如下: void MergeSort(RecType R[],int n) /*自底向上的二路归并算法*/ { int length; for (length=1;length MergePass(R,length,n); } 你这个是c程序还是c++ c++的话类型要比较严格 比较函数接受的参数类型应该是const void* c的话你main里函数原型的声明也不对啊,这样改一下 #include #include #include int num[]={125,-26,53,12,-6,95,46,85,-45,785};/*定义全局数组*/ void main() { int i,comp1(const void *i,const void *j),comp2(const void *i,const void *j); system("cls");/*清屏*/ printf("the original array is:\n"); for(i=0;i<10;i++)/*将数组按原序输出*/ printf("%10d",num[i]); qsort(num,10,sizeof(int),comp1); printf("\n The accending sorted array is:\n"); for(i=0;i<10;i++)/*将数组按升序输出*/ printf("%10d",num[i]); qsort(num,10,sizeof(int),comp2); printf("\n The decending sorted array is:\n"); for(i=0;i<10;i++)/*将数组按降序输出*/ printf("%10d",num[i]); getchar(); } comp1(const void *i,const void *j) { return *(const int*)i-*(const int*)j; } comp2(const void *i,const void *j) { return *(const int*)j-*(const int*)i; } 延伸阅读: C语言数组排序方法像是选择法排序,但不太简练! 正确的选择法为: #include <stdio.h> void main(void) { int a[9]={3,42,55,546,43,323,54,121,32},i,j,l,temp; for(i=0;i<9;i++) for(j=i+1;j<8;... 求C语言编写的表白程序要代码呃,你还不如用vbs,网上也有一堆教程和例子,很简单,随便看一下就知道怎么写了。1234567891011121314 DimmyName,herName,myNameAns,herNameAnsmyName="池早早"herName="欧浩辰"MsgBox... 关于C盘的问题要详细答案你试试硬盘分区魔术师8.0硬盘分区魔术师使用说明有过一定的计算机经验的朋友都应该知道Power Quest公司的Partition Magic磁盘分区大师。1998年Power Quest推出了它的升级版... 没学过C语言可以学C语言数据结构与算法吗你好 一点小建议希望能对你有帮助 (1)学算法 学习算法和具体的语言还是有一定的联系,比如说你的算法最后要用c语言来实现,因为c是面向过程的,所以这和用面向对象的语言如c++来实... C语言数据结构与算法分析C语言描述Position不是一个类型,起码C语言中,我写那么多年代码没见过这个类型 。你该把整段代码贴上来。我猜你看的那段代码是伪代码,Position是自定义类型。若Position是类名,那么Positi... 泡黄豆观察日记追加120悬赏分泡黄豆观察日记追加120悬赏分,泡豆芽的观察日记100多字:种黄豆芽首先 1)要选好优质的黄豆 :黄豆不能用机器打过的,因为经过水泡后的黄豆易成两瓣不易成长导致腐烂。 2)选好的2~3斤... 求C语言程序设计实例要100行以上求C语言程序设计实例要100行以上,C语言编程100例变形题:Problem Description: The highest building in our city has only one elevator. A request list is made up with N... 初中关于厚德载物的主题班会急可追加悬赏50初中关于厚德载物的主题班会急可追加悬赏50,文明礼仪班会课设计方案:主持人稿 大意: 人有聪明和愚笨,就如同地形有高低不平,土壤有肥沃贫瘠之分。农夫不会为了土壤贫瘠而不耕作,君... C语言问题利用指针方法如何引导学生分析文本的篇章结构:基本解释 1、指针的本质是一个与地址相关的复合类型,它的值是数据存放的位置(地址);数组的本质则是一系列的变量。 2、数组名对应着(而不是指向)一...c语言快速排序qsort函数