C语言实现快速排序算法,代码出错了,看了很久不懂错在哪里,求解,谢谢各位胖友!
下面po上代码以及错误提示。
(请忽略俺纠结的注释……)
#include<stdio.h>
#include<stdlib.h>
/*************************************
需要写三个函数
打印数组的函数print(int a[],int end)
快速排序一次划分的算法partition(int a[],int first,int end)
快速排序完整算法,递归调用,分治quicksort(int a[],int first,int end)
**************************************/
/*************************************
打印数组的函数print(int a[],int end)
用for循环,i++控制循环次数
**************************************/
void print(int a[], int end)
{
int i;
for(i=0; i<=end; i++)
{
print("%d,", a[i]);
}
printf("\n");
return;
}
/*************************************
快速排序一次划分的算法partition(int a[],int first,int end)
将i,j的值传给参数first,end
大前提是i<j,接着先扫描右边再扫描左边
具体:
i<j? 是 注:要一直进行该判断!
①a[i]<a[j]? 是(j--(即一直减到在右边扫描到一个比a[i]小的数,并记录此时j的值))
②a[i]<a[j]? 否(基准数与 a[j]交换,并i++(即先准备(记录)好下一轮从左边起的该扫描段的起点))
最后,返回i (心机婊,这个i是分界点,分水岭(处于这个点上的数意味着已经被排到了正确的位置上了))
“一直 ”用 while 循环
**************************************/
int partition(int a[],int first,int end)
{
int temp;
int i=first;
int j=end;
while(i<j)
{
while(a[i]<a[j])
{
j--;
}
if(i < j)
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
i++;
}
while (a[i] <= a[j])
{
i++;
}
if (i < j){
temp=a[i];
a[i]=a[j];
a[j]=temp;
j--;
}
}
return i;
}
/*************************************
快速排序完整算法,递归调用,分治quicksort(int a[],int first,int end)
调用函数partition()
使用partition()返回的分界点i
对i之前的那部分数用partition() ,
和对i之后的那部分数用partition()
**************************************/
void quicksort(int a[],int first,int end)
{
int point=partition(a,first,end);
quicksort(a, first, point-1);
quicksort(a, point+1, end);
return;
}
/*************************************
main函数
初始化数组,即写入待排序数组
并把值传给参数first,end
**************************************/
int main()
{
int a[]={2,3,8,1,9};
int first=0;
int end=4;
printf("原始数组:");
print(a,end);
quicksort(a,first,end);
printf("排序后:");
print(a,end);
system("pause");
return 0;
}错误提示:
E:\C-SPACE\fang快速排序.cpp In function 'void print(int*, int)':
26 21 E:\C-SPACE\fang快速排序.cpp [Error] cannot convert 'const char*' to 'int*' for argument '1' to 'void print(int*, int)'

我是拿Dev-C++编译运行的。
all……
请各位大佬讲解时尽量简单详尽,
或者告诉俺应该着重看哪个方面的内容……
谢谢各位大佬了……
for(i=0;i<1000000;i++)
{
printf("给大佬递茶");
}

酉时酒味浓
Jedenn
酉时酒味浓
Jedenn
随时随地看视频慕课网APP