c 快速排序 堆栈-快速排序遇到了堆栈问题

问题描述

快速排序遇到了堆栈问题

源代码://快速排序
#include
#include
#include

int main(){
int Kspx(int b,int c[]);//声明
int a[1000];int n,m;
scanf("%d",&n);//确定需要排序的数的数量
for(m=0;m<n;m++){//给数组赋值
scanf("%d",&a[m]);
}

Kspx(n,a);//调用

for(m=0;m<n;m++){//输出
    printf("%d ",a[m]);
}

system("pause");
return 0;
}
int Kspx(int b,int c[]){//定义

int e[1000],f[1000];//定义辅助数组用于递归
int i=0,j=b-1,key=c[0];

if(i==j){
    return c[0];
}
else{

    for(j;j>i;j--){
         if(c[j]<key){
            c[i]=c[j];
            c[j]=key;
            for(i;i<j;i++){
               if(c[i]>key){
                c[j]=c[i];
                c[i]=key;
                break;
               }
           }
         }
    }
}
for(i=0;i<b;i++){//将数组分成前后
    if(c[i]<key){
        e[i]=c[i];}
    if(c[i]=key){
        j=i;}
    if(c[i]>=key){
        f[i-j]=c[i];}
}
Kspx(j,e);//key值前元素排序
Kspx(b-j+1,f);//key值后元素排序

}

出错信息1:
0219.exe 中的 0x010d1ae7 处有未经处理的异常: 0xC00000FD: Stack overflow
出错信息2:
test dword ptr [eax],eax ; probe page.

请问我该如何改进

时间: 2024-08-16 16:34:53

c 快速排序 堆栈-快速排序遇到了堆栈问题的相关文章

快速排序:PHP 快速排序

<?php  //Quick Sort  function quickSort(array $array){  static $run = 0;  $len = count($array);  if($len <= 1) return $array;  $arrleft=array();  $arrright=array();  $flag = $array[0];  for($i=1;$i<$len;$i++){  if($array[$i]<=$flag){  $arrleft

C#堆栈

using System; namespace ZH.DataFrame.AbstractData{    ObjectStackADT object堆栈#region ObjectStackADT object堆栈    /**//// <summary>    /// object堆栈(先进后出)    /// </summary>    public class StackADT    {        private object[] s;        private i

汇编中参数的传递和堆栈修正

在 Win32汇编中,我们经常要和 Api 打交道,另外也会常常使用自己编制的类似于 Api 的带参数的子程序,本文要讲述的是在子程序调用的过程中进行参数传递的概念和分析.一般在程序中,参数的传递是通过堆栈进行的,也就是说,调用者把要传递给子程序(或者被调用者)的参数压入堆栈,子程序在堆栈取出相应的值再使用,比如说,如果你要调用 SubRouting(Var1,Var2,Var3),编译后的最终代码可能是 push Var3push Var2push Var1call SubRoutingadd

php调试打印堆栈的代码

Php代码 <?php // filename: /tmp/a.php function a_test($str) { echo "\nHi: $str"; var_dump(debug_backtrace()); } a_test('friend'); ?> <?php // filename: /tmp/b.php include_once '/tmp/a.php'; ?> 结果 Php代码 Hi: friend array(2) { [0]=> ar

汇编中参数的传递和堆栈修正【转载】

 在Win32汇编中,我们经常要和Api 打交道,另外也会常常使用自己编制的类似于Api 的带参数的子程序,本文要讲述的是在子程序调用的过程中进行参数传递的概念和分析.一般在程序中,参数的传递是通过堆栈进行的,也就是说,调用者把要传递 给子程序(或者被调用者)的参数压入堆栈,子程序在堆栈取出相应的值再使用,比如说,如果你要调用 SubRouting(Var1,Var2,Var3),编译后的最终代码可能是    push Var3    push Var2    push Var1    call

【万字总结】快速排序详解与各种线性时间排序对比

什么是快速排序 快速排序简介 快速排序(英文名:Quicksort,有时候也叫做划分交换排序)是一个高效的排序算法,由Tony Hoare在1959年发明(1961年公布).当情况良好时,它可以比主要竞争对手的归并排序和堆排序快上大约两三倍.这是一个分治算法,而且它就在原地排序. 所谓原地排序,就是指在原来的数据区域内进行重排,就像插入排序一般.而归并排序就不一样,它需要额外的空间来进行归并排序操作.为了在线性时间与空间内归并,它不能在线性时间内实现就地排序,原地排序对它来说并不足够.而快速排序

数据结构和算法13 之快速排序

 上一节我们学习了一个高级排序算法:希尔排序,这一节我们将讨论另一个高级排序算法:快速排序.         快速排序算法是最流行的排序算法,因为有充足的理由,在大多数情况下,快速排序都是最快的,执行时间为O(NlogN)级(这只是对内部排序或者说随机存储器内的排序而言,对于在磁盘文件中的数据进行的排序,其他的排序算法可能更好).快速排序本质上通过一个数组划分为两个子数组,然后递归地调用自身为每一个子数组进行快速排序来实现的,即算法分为三步:         1. 把数组或者子数组划分为左边(较

C++异常中的堆栈跟踪

 C++语言的运行时环境是基于栈的环境,堆栈跟踪(trace stack)就是程序运行时能够跟踪并打印所调用的函数.变量及返回地址等,C++异常中的堆栈跟踪就是当程序抛出异常时,能够把导致抛出异常的语句所在的文件名和行号打印出来,以及把调用抛出异常的语句的函数以及其它上层函数信息都打印出来.1. 为什么需要堆栈跟踪当你在开发程序时,你是否曾遇到过程序运行过程中突然当机,而你不知道哪一行代码出的问题:你是否曾遇到过程序调试过程中突然抛出异常,而你不知道哪一行代码出的问题:你是否曾遇到过当你在单步调

快速排序的算法思想及Python版快速排序的实现示例_python

快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序.它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod). 1.分治法的基本思想 分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题.递归地解这些子问题,然后将这些子问题的解组合为原问题的解. 2.快速排序的基本思想 设当前待排序的无序区为R[low..high],利用分治法可将快速排序的基本思想描述为: (1)分解: 在R[low..high]中任选一个记录作为基准(