c语言四种排序算法完整程序,C语言高效排序算法及源代码

1,C语言高效排序算法及源代码如果你排序的数据容量比较小的话就用选择 , 冒泡,或者插入,时间都差不多 。如果你的数据比较大的话 , 就要用快排,归并,堆排序?。「咝判颍愕母咝遣皇侵杆俣瓤梢钥聪聁uicksort,至于源码网上很多 。搜一下就行,在算法实现编程上语言相关性不多,java的代码和C的看起来差不多 这个你可以考虑一下冒泡排序 或者是选择排序 , 这两个都差不多,现在一般我们用冒泡排序比较多 把那个调用函数写写看啊 ,看看这个从大到小的排序inf fun(int a[n])for(i=0;i<n-1;i++)// n-1 是比较的次数for(j=i;j<n;j++)}用选择排序和这个原理是一样的,但这个简洁易懂些,应该看的明白哦【c语言四种排序算法完整程序,C语言高效排序算法及源代码】
2,C语言中的排序法c语言中排序法有选择法和冒泡法是最常见的 。1冒泡法对10个数排序#include<stdio.h>voidmain(){inta[10];inti,j,t;printf("pleaseinput10numbers:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("\n");for(j=0;j<9;j++)//进行9次循环,实现9次比较for(i=0;i<9-j;j++)//在每一次比较中在进行9-j次比较if(a[i]>a[i+1])//相邻两数比较大的下沉即交换{t=a[i+1];a[i+1]=a[i];a[i]=t;}printf("thesortednumbers:\n");for(i=0;i<10;i++)printf("%d",a[i]);printf("\n");}不管有多少数只要改变一下都可以实现功能 。定义一个大的数组 , 用多次循环就可以实现 。2选择法对10个数排序此法没有冒泡法方便不在叙述 。
3 , C语言排序程序写法冒泡法!#include&lt;stdio.h&gt;int main()int a[10],i,j,t;printf("Input 10 numbers:\n");for(i=0;i&lt;10;i++)scanf("%d",&amp;a[i]);printf("\n");for(i=0;i&lt;9;i++)for(j=0;j&lt;9-i;j++)if(a[j]&gt;a[j+1])printf("The sorted numbers:\n");for(i=0;i&lt;10;i++)printf("%d\n",a[i]);return 0;}选择排序法#include&lt;stdio.h&gt;void main()int a[11],i,j,k,x;printf("Input 10 numbers:\n");for(i=0;i&lt;10;i++)scanf("%d",&amp;a[i]);printf("\n");for(i=0;i&lt;9;i++)for(j=i+1;j&lt;10;j++)if(a[j]&lt;a[k]) k=j;if(i!=k)}printf("The sorted numbers:\n");for(i=0;i&lt;10;i++)printf("%d\n",a[i]);}
4,c语言排序程序#include <stdio.h>void main()int a[10];int i,j,t;for(i=0;i<=9;i++)scanf("%d",&a[i]);for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j])t=a[i];a[i]=a[j];a[j]=t;}}/*交换到这里结束*/for(i=0;i<=9;i++)printf("%d ",a[i]);printf("\n");/*下一次循环时换行*/} 也没有多大的错误小心点,C是分语句执行的,到了“;”就是一条语句 , 除非你用“{}”,这样可以将几个语句合并为一条语句 。可以简单这么理解 。#include<stdio.h>voidmain()inta[10];inti,j,t;for(i=0;i<=9;i++)scanf("%d",&a[i]);for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j])/*交换从这里开始*/t=a[i];a[i]=a[j];a[j]=t;}}/*交换到这里结束*/for(i=0;i<=9;i++)printf("%d",a[i]);printf("\n");/*下一次循环时换行*/}也没有多大的错误小心点,C是分语句执行的 , 到了“;”就是一条语句,除非你用“{}” , 这样可以将几个语句合并为一条语句 。可以简单这么理解 。if(a[i]>a[j]) //--->没 t=a[i]; a[i]=a[j]; //执行完if后继续执行(不属于if的范围)a[j]=t;#include <stdio.h> void main() int a[10]; int i,j,t; printf("input 10 numbers:\n")for(i=0;i<=10;i++) scanf("%d",&a[i]); for(i=0;i<=8;i++) for(j=i+1;j<=9;j++) ; if(a[i]>a[j+1]) t=a[i]; a[i]=a[j]; a[j]=t; } for(i=0;i<=9;i++) printf("%d ",a[i]); }if语句后缺少if(a[i]>a[j])t=a[i];a[i]=a[j];a[j]=t; }我有在VC上运行过5,C语言 快速排序源程序#include#include int a[100]; void ks(int i, int j) { int t,l=i,h=j,m; m=a[(i+j)/2]; while (i<=j) { while (a[i]m) j=j-1; if (i<=j) { t=a[i]; a[i]=a[j]; a[j]=t; i=i+1; j=j-1;} } if(i快速排序算法 快速排序是对冒泡排序的一种改进 。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要?。缓笤侔创畏椒ǘ哉饬讲糠质莘直鸾锌焖倥判? ,整个排序过程可以递归进行,以此达到整个数据变成有序序列 。假设要排序的数组是A[1]……A[N],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一躺快速排序 。一躺快速排序的算法是: 1)、设置两个变量I、J , 排序开始的时候I:=1,J:=N; 2)以第一个数组元素作为关键数据,赋值给X,即X:=A[1]; 3)、从J开始向前搜索,即由后开始向前搜索(J:=J-1),找到第一个小于X的值,两者交换; 4)、从I开始向后搜索,即由前开始向后搜索(I:=I+1),找到第一个大于X的值,两者交换; 5)、重复第3、4步,直到I=J; 例如:待排序的数组A的值分别是:(初始关键数据X:=49) A[1]A[2]A[3]A[4]A[5]A[6]A[7]:49386597761327 进行第一次交换后:27386597761349 ( 按照算法的第三步从后面开始找 进行第二次交换后:27384997761365 ( 按照算法的第四步从前面开始找>X的值,65>49,两者交换,此时I:=3 ) 进行第三次交换后:27381397764965 ( 按照算法的第五步将又一次执行算法的第三步从后开始找 进行第四次交换后:27381349769765 ( 按照算法的第四步从前面开始找大于X的值,97>49,两者交换,此时J:=4 ) 此时再执行第三不的时候就发现I=J,从而结束一躺快速排序,那么经过一躺快速排序之后的结果是:27381349769765,即所以大于49的数全部在49的后面,所以小于49的数全部在49的前面 。快速排序就是递归调用此过程——在以49为中点分割这个数据序列,分别对前面一部分和后面一部分进行类似的快速排序,从而完成全部数据序列的快速排序,最后把此数据序列变成一个有序的序列 , 根据这种思想对于上述数组A的快速排序的全过程如图6所示: 初始状态{49386597761327}进行一次快速排序之后划分为{273813}49{769765} 分别对前后两部分进行快速排序27结束结束{4965}7649结束 结束 图6快速排序全过程1)、设有N(假设N=10)个数,存放在S数组中;2)、在S[1 。。N]中任取一个元素作为比较基准,例如取T=S[1],起目的就是在定出T应在排序结果中的位置K,这个K的位置在:S[1 。。K-1]<=S[K]<=S[K+1..N],即在S[K]以前的数都小于S[K] , 在S[K]以后的数都大于S[K];3)、利用分治思想(即大化小的策略)可进一步对S[1 。。K-1]和S[K+1 。。N]两组数据再进行快速排序直到分组对象只有一个数据为止 。

    推荐阅读