C语言快速排序的代码
发布网友
发布时间:2022-04-29 20:37
我来回答
共3个回答
热心网友
时间:2022-06-22 11:18
首先我赞成你直接要代码的这种方法。
从你这个提问可以看出你对常用的排序算法都接触过,并且都没搞懂到底是怎么回事。
现在的电子平台资源都很丰富了,硬件平台的运行速度可以做到很高了,在大多数的情况下可以考虑用空间换时间的方法,也就是说你应该先搞懂算法的本质,然后再自己去实现它,开始的时候可以不考虑时间上的损耗。
排序的本质就是两个数比较大小,并根据其大小将其放到相应的位置。
记住其本质是什么,你自己绝对可以使用相应的语言实现它。
热心网友
时间:2022-06-22 11:19
快速排序也叫shell排序。。。这是我以前写的代码中的一段:
你可以拿去直接用。。。
void modInsertSort(int* data,int n,int delta)
{
int i,j,temp;
for(i=delta;i<n;i+=delta)
for(j=i;j>=delta;j-=delta)
{
if(data[j]<data[j-delta])
temp=data[j],data[j]=data[j-delta],data[j-delta]=temp;
else
break;
}
}
void shellSort(int data[],int len)
{
int i,delta;
for(delta=len/2;delta>0;delta/=2)
for(i=0;i<delta;i++)
modInsertSort(&data[i],len-i,delta);
if(len<=10)
for(i=0;i<len;i++)
printf("%-5d",data[i]);
puts("\n");
}
热心网友
时间:2022-06-22 11:19
void QuickSort(int ar[],int t,int w)
{
int i,j,k;
int tmp;
if (t<w)
{
i=t;j=w;
while(i<j)
{
tmp=ar[i];
while((ar[j]>=tmp)&&(j>i))
{
j--;
}
if (i<j)
{
ar[i]=ar[j];
i++;
}
while((ar[i]<=tmp)&&(j>i))
{
i++;
}
if (i<j)
{
ar[j]=ar[i];
j--;
}
ar[i]=tmp;
QuickSort(ar,t,j-1);
QuickSort(ar,j+1,w);
}
}
}
C语言快速排序代码
quicksort(a,11);for(int c=1;c<11;c++)printf("%3d",a[c]);}
c语言怎样实现快速排序
c = arr_num[i];arr_num[i] = arr_num[j];arr_num[j] = c;} } //left为起始值(参照值)此时的I为第一次排序结束的最后值,与参照值交换位置 arr_num[left] = arr_num[i];arr_num[i] = temp;//继续递归直到排序完成 quick_sort(left, i-1);quick_sort(i+1, right);} i...
C语言快速排序
/快速排序算法/ int Partition(int D[], int l, int r){ D[0]=D[l];while (l<r) { while (l<r && D[0]<D[r]) r--;D[l]=D[r];while (l<r && D[0]>=D[l]) l++;D[r]=D[l]; } D[r]=D[0];return r;} void Qsort(int D[], int l, int r){ int p...
菜鸟提问 c语言关于快速排序
其实,最想说明的是那段交换的代码 R[j]^=R[i];R[i]^=R[j];R[j]^=R[i];一定要排除 i==j 的情况。即自己与自己交换的情况。如:a=9;a^=a;/*a=0*/ a^=a;/*a=0*/ a^=a;/*a=0*/ a就不再是10了。include<stdio.h> include<stdlib.h> void quicksort(int R[],int...
求助C语言快速排序
void QuickSort(int A[], int n, int left, int right){ /*快速排序(升序),n为数组元素个数,left/right为数组左/右边界*/int i, j, t;if (left<right){ /*一趟快速排序*/i = left + 1;j = right;while (1){while (i <= right && A[i] <= A[left]) i++; /*向...
c语言函数快速排序问题
int list[]={98,34,56,27,78,73,70,90,28,84,45,85,12,18,54,34,29};int i;qksort(list,0,16);for(i=0;i<17;i++){ printf("%d ",list[i]);} printf("\n");return 0;} int qksort(int a[],int leftposition,int rightposition){ int pivot,i,j,swap;if(right...
C语言一个快速排序的问题 我应该是传参的问题 但我不知道该如何改 请大...
下面是《算法导论》里快速排序的实现,希望对你有用:include<stdio.h>void swap(int *a,int *b){ int t =*a; *a = *b; *b = t; return;}int partition(int a[],int start,int end){ int x = a[end]; int i = start -1; int j; for(j= start...
c语言生成50个随机数,对随机数进行快速排序。
//快速排序(降)void quicksdown(int *arr,int low,int high){ int temp,l,r;if(low<high){ l=low;r=high;temp=arr[low];while(low<high){ while(low<high&&arr[high]<=temp)high--;if(high==LEN)high--;if(low<high)arr[low]=arr[high];while(low<high&&arr[low]>=temp)low...
如何用C语言输入十个随机的数进行排序?
1、首先打开编辑软件,新建一个c程序空文件,引入标准库和主函数,定义一个QuickSort函数用来排序,下面首先编写排序函数的:2、此处用到快速排序思想,通过一趟排序将要排序的数据分割成独立的两部分,即这里用i和j两个变量分割数据,然后一部分的所有数据都比另外一部分的所有数据都要小,接着对这两部分...
用C语言快速排序法编程按从大到小输出下面十个数(24,2,8,32,87,45...
QuickSort(low,Low-1,array); /*对基准点左边的数再执行快速排序*/ QuickSort(Low+1,high,array); /*对基准点右边的数再执行快速排序*/ } } void main() { int array[]={24,2,8,32,87,45,16,2,12,40};int i=9;QuickSort(0,9,array);for(;i>=0;i--)printf("%d "...