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