[c语言中的数组排序]#include #include int numSort(int *a,int count_num) { int i,j,min=-1,temp; for(j=count_num-1;j>0;j--) for(i=j-1;i>=0;i--) if(a[j] > a[i]) { temp=a[i]; a[i]=a[j]...+阅读
C语言快速排序代码
#include (1)“冒泡法” 冒泡法大家都较熟悉。其原理为从a[0]开始,依次将其和后面的元素比较,若a[0]>a[i],则交换它们,一直比较到a[n]。同理对a[1],a[2],...a[n-1]处理,即完成排序。下面列出其代码: void bubble(int *a,int n) /*定义两个参数:数组首地址与数组大小*/ { int i,j,temp; for(i=0;i 下面说明一种源自冒泡法但更有效率的方法“选择法”。 (2)“选择法” 选择法循环过程与冒泡法一致,它还定义了记号k=i,然后依次把a[k]同后面元素比较,若a[k]>a[j],则使k=j.最后看看k=i是否还成立,不成立则交换a[k],a[i],这样就比冒泡法省下许多无用的交换,提高了效率。 void choise(int *a,int n) { int i,j,k,temp; for(i=0;i (3)“快速法” 快速法定义了三个参数,(数组首地址*a,要排序数组起始元素下标i,要排序数组结束元素下标j). 它首先选一个数组元素 (一般为a[(i+j)/2],即中间元素)作为参照,把比它小的元素放到它的左边,比它大的放在右边。然后运用递归,在将它左,右两个子数组排序,最后完成整个数组的排序。下面分析其代码: void quick(int *a,int i,int j) { int m,n,temp; int k; m=i; n=j; k=a[(i+j)/2]; /*选取的参照*/ do { while(a[m] (4)“插入法” 插入法是一种比较直观的排序方法。 它首先把数组头两个元素排好序,再依次把后面的元素插入适当的位置。把数组元素插完也就完成了排序。 void insert(int *a,int n) { int i,j,temp; for(i=1;i 它首先把相距k(k>=1)的那几个元素排好序,再缩小k值 (一般取其一半),再排序,直到k=1时完成排序。下面让我们来分析其代码: void shell(int *a,int n) { int i,j,k,x; k=n/2; /*间距值*/ while(k>=1) { for(i=k;i #include 给个快速排序你参考参考 /********************** 快速排序 **************************** 基本思想:在待排序的n个记录中任取一个记录(通常取第一个记录), 以该记录为基准,将当前的无序区划分为左右两个较小的无 序子区,使左边的记录均小于基准值,右边的记录均大于或 等于基准值,基准值位于两个无序区的中间位置(即该记录 最终的排序位置)。之后,分别对两个无序区进行上述的划 分过程,直到无序区所有记录都排序完毕。*************************************************************//************************************************************* 函数名称:static void swap(int *a, int *b) 参 数:int *a---整型指针 int *b---整型指针 功 能:交换两个整数的位置 返 回 值:无 说 明:static关键字指明了该函数只能在本文件中使用**************************************************************/ static void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } int quickSortNum = 0; // 快速排序算法所需的趟数/************************************************************* 函数名称:static int partition(int a[], int low, int high) 参 数:int a[]---待排序的数据 int low---无序区的下限值 int high---无序区的上限值 功 能:完成一趟快速排序 返 回 值:基准值的最终排序位置 说 明:static关键字指明了该函数只能在本文件中使用**************************************************************/ static int partition(int a[], int low, int high) { int privotKey = a[low]; //基准元素 while(low= privotKey) // 找到第一个小于privotKey的值 high--; //从high所指位置向前搜索,至多到low+1位置 swap(&a[low], &a[high]); // 将比基准元素小的交换到低端 while(low 首先 你在e68a84e8a2ade79fa5e9819331333332643937if(i {r[j]=r[i];j--;}}这里多了一个}符号 第二 while(ii&r[j]>=r[0]) if(ii&r[i]<=r[0]) 这两个语句出现了ii 应该是i 其他的我还在帮你看 好吧,上面两个语句还有两个问题,应该把i换成j,否则一开始就判断为假 我完全看不懂你混乱的思维,直接给你贴一个快排的代码 void quiksort(int a[],int low,int high){ int i = low; int j = high; int temp = a[i]; if( low < high) { while(i < j) { while((a[j] >= temp) & (i < j)) { j--; } a[i] = a[j]; while((a[i] <= temp) & (i < j)) { i++; } a[j]= a[i]; } a[i] = temp; quiksort(a,low,i-1); quiksort(a,j+1,high); } else { return; }} void main() { int arry[5] = {23,1,21,4,19}; quiksort(arry,0,4); for(i=0;i<5;i++) { printf("%d ",arr[i]); } printf("\n"); } 延伸阅读: C语言数组排序#include<stdio.h> void main() { int a[10] = { 10,2,3,4,5,6,9,8,7,1 }; int i,j,t; for(j=0;j<10;j++) for(i=0;i<10-1-j;i++) if(a[i]>a[i+1]) /* 由小到大,由大到小时改... C语言数组排序高手快来#include "stdio.h" #define N 4 void main() { long num[N]; float score[N],sum=0,average; int a,b,i,j; printf("please input student number:\n"); for(i=0;i scanf("%ld",&... 数组排序C语言#include <stdio.h> #include <iostream.h> #include <stdlib.h> #include<time.h> void main() { int a[100],i,c,b,d,e,n; cin>>n; srand((unsigned)time(NULL)); for(i=0... C语言中数组的排序方法中选择排序的原理是,每次从待排序数字中挑选出最大(最小)数字,放在有序序列的末尾。实际操作中,只需要在这个数组中将挑出来的数字与前面的数字交换即可。 例如: 4 1 5 2 3 找到最小... 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语言整数数组排序#include"stdio.h" #define N 10 void sort(int a[],int method) { int i,k,t,j; switch(method) { case 1: for(i=0;i<N;i++) { for(j=0;j<N;j++) { if(a[j]>a[i]) { t=a[i];... C语言计算工资的代码你为什么要用;if(y<5,t<=40),建议你看看逗号运算符的用法,、 int main() { int y,t; double m; scanf("%d %d",&y,&t); if(y<5 & t<=40) //且的关系 printf("%.2f",m=t*30); else i... c语言告白代码带音乐用C语言播放音乐,一般需要额外的库或者调用系统的API函数。 以Windows为例,可以通过PlaySound函数播放wav格式的音乐。示例如下: #include<stdio.h> #include<windows.h> #incl... vb快速排序之二分法代码vb快速排序之二分法代码,c对9 1 8 2 7 3 6 4 5用二分法排序成升序!求写法!求高人指教!Public Function BinSearch(ByRef strElement() As String, ByVal strKey As String) As L...C语言实现七种排序算法的
用C语言编程实现快速排序算法
C语言程序快速排序