快速排序 --递归调用一个函数初始值被写死
2012-11-22 17:10
274 查看
这次的错误在:Pattition这个函数虽然不是递归函数但是它是被递归调用的,因此最小是a[low]
我开始单纯写这个函数的时候以为是调用第一个所以数组写成了a[0]
int Pattition(int a[],int low,int high)
{
int pivot=a[0];
我开始单纯写这个函数的时候以为是调用第一个所以数组写成了a[0]
int Pattition(int a[],int low,int high)
{
int pivot=a[0];
#include<iostream> using namespace std; void QuickSort(int a[], int n); void Qsort(int a[],int low,int high); int Pattition(int a[],int low,int high); void print(int a[],int low, int high); int main() { int a[]= { 3,7,2,9,6,5,8,1,4}; cout<<"原排序为:"<<endl; print(a,0,8); QuickSort(a,9); system("pause"); return 0; } void QuickSort(int a[], int n) { Qsort(a,0,n-1); print(a,0,n-1); } void Qsort(int a[],int low,int high) { int pivotloc; if(low < high) { pivotloc = Pattition(a,low,high); cout<<"pivotloc:"<<pivotloc<<"--pivot"<<a[pivotloc]<<endl; cout<<"Low:"<<endl; print(a,low,pivotloc-1); cout<<"high:"<<endl; print(a,pivotloc+1,high); cout<<"开始递归low部分:"<<endl; Qsort(a,low,pivotloc-1); cout<<"开始递归high部分:"<<endl; Qsort(a,pivotloc+1,high); } } int Pattition(int a[],int low,int high) { int pivot=a[low]; int temp_high,temp_low; while(low<high) { while(low<high&&a[high]>=pivot) { --high; } temp_high=a[low]=a[high]; while(low<high&&a[low]<=pivot) { ++low; } temp_low=a[high]=a[low]; } a[low]=pivot; return low; } void print(int a[],int low, int high) { for (int i = low; i <= high; ++i) { cout<<a[i]<<" "; } cout<<endl; }
相关文章推荐
- 编写一个递归调用函数,输出vector对象的内容
- 用纯C语言实现快速排序,分递归调用法和非递归调用法。
- 常见C语言题目:选择排序,冒泡排序,函数调用,递归等重要题列
- C语言调用库函数实现快速排序
- C++ primer 这本书上有这么两句话“派生类虚函数调用基类版本时,必须显式使用作用域操作符。如果派生类函数忽略了这样做,则函数调用会在运行时确定并且将是一个自身调用,从而导致无穷递归。”
- 我想用strcmp() 作为比较函数, 调用qsort() 对一个字符串数组排序, 但是不行。
- JavaScript创建一个add()函数可实现,可变参数和递归调用
- 练习 4-12 运用 printd 函数的设计思想编写一个递归版本的 itoa 函数,即通过递归 调用把整数转换为字符串
- C代码学习,快速排序,左右并进,递归调用(另注释)
- 你好,C++(27)在一个函数内部调用它自己本身 5.1.5 函数的递归调用
- 《Java程序》使用递归调用的方法,写一个能够将字符串倒叙输出的函数
- 5.定义一个可以接收三个数字的函数,函数体内实现三个数字的排序输出 →(javascript代返回值的函数的申明和调用)
- 调用库函数进行的qsort快速排序
- 【郝斌数据结构自学笔记】53-56_一个函数为什么可以自己调用自己_递归必须满足三个条件_循环和递归的比较
- C++ 排序法之冒泡法和选择法 素数,递归调用,用星号(*)打印一个梯形
- (转载)你好,C++(27)在一个函数内部调用它自己本身 5.1.5 函数的递归调用
- SQL SERVER树型数据处理时,函数递归调用问题,查询根节点,子节点函数
- 快速排序(递归及非递归算法源码)
- pyton设计一个函数,让返回值的调用来回切换,调用一次,返回1,下次调用返回0
- ios 中调用函数的方法是消息传递,这个和普通的函数调用的区别是,你可以随时对一个对象传递任何消息,而不需要在编译的时候声明这些方法。所以Objective-C可以在runtime的时候