快速排序算法c语言
发布网友
发布时间:2022-04-29 20:37
我来回答
共1个回答
热心网友
时间:2022-05-22 02:29
quick明显有问题,1.存在死循环2.使用递归是想实现什么?
如果想实现快速排序的话可以参考一下程序段,尽量精简交换操作增加排序速度:
void quick(int *arr, int len)
{
int i, j,k,z;
for (i = 0; i < len - 1; i++)
{
for (j = 0,k=0; j < len - i - 1; j++)
{
if (arr[k] < arr[j + 1])
k = j + 1;
}
if (k != len - i - 1)
{
z = arr[len - i - 1];
arr[len - i - 1] = arr[k];
arr[k] = z;
}
}
}
C语言的快速排序的算法是什么啊?
一趟快速排序的算法是: 1)设置两个变量I、J,排序开始的时候:I=0,J=N-1; 2)以第一个数组元素作为关键数据,赋值给key,即 key=A[0]; 3)从J开始向前搜索,即由后开始向前搜索(J=J-1),找到第一个小于key的值A[J],并与key交换; 4)从I开始向后搜索,即由前开始向后搜索(I...
如何用C语言输入10个数并排序
1、首先打开编辑软件,新建一个c程序空文件,引入标准库和主函数,定义一个QuickSort函数用来排序,下面首先编写排序函数的:2、此处用到快速排序思想,通过一趟排序将要排序的数据分割成独立的两部分,即这里用i和j两个变量分割数据,然后一部分的所有数据都比另外一部分的所有数据都要小,接着对这两部分...
用C语言写个完整程序,包括希尔排序和快速排序
(d): a c b d e f g h i k l j m p o n q s u z x y v t r w(c): a b c d e f g h i k l j m p o n q s u z x y v t r w(i): a b c d e f g h i k l j m p o n q s u z x y v t r w(k): a b c d e f g h i j k l m...
菜鸟提问 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 s,int t){ int i,j;int temp...
快速排序算法
快速排序(Quicksort)是对冒泡排序的一种改进。然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理。重复上述过程,可以看出,这是一个递归定义。通过递归将左侧部分排好序...
C语言中说的按字典顺序是什么意思?
C语言排序算法:快速排序:1、假设我们给一个int数组进行排序,数组中数字初始序列为int a[9]={3,6,5,9,7,1,8,2,4} 2、分析快速排序的原理前,我们先声明一些东西,首先设置一个临时变量用来存放随机取出数组中的一个数,一般我们取数组的第一个元素也就是说temp=a[0],同时设置两个游标分别...
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语言快速排序算法问题
附上快速排序代码:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 include<stdio.h> void quicksort(int a[],int left,int right){ int i,j,temp;i=left;j=right;temp=a[left];if(left>right)return;while(i!=...
c语言 排序函数
首先这是一种快速排序的算法,你也应该知道,快速排序就是选择序列中的一个元素作为基准,通过循环找到这个基准最终的位置,并把所有小于这个基准的元素移到这个位置的左边,大于基本的元素移到右边,这样再对这个基准的左右两边分别递归调用自己,最终就能得到排序的结果。再来解释一下这个例子,它选择的基准...
C语言,大牛推荐的七大经典排序算法
C语言大牛雅荐的七大经典排序算法 1.冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换它们两个对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;针对所有的元素重复以上的步骤,除了最后一个;重复步骤1~3,直到排序完成。 2.选择排序 在未排序序列中找到最...