您现在的位置: 爱51代码网 >> 范文 >> 文章正文
java排序算法中的这个StackOverflowError 怎么改

java排序算法中的这个StackOverflowError 怎么改

个快速排序的程序,编译后出错。error如下,不知道怎么改。请大家帮忙提示一下 怎么改我的程序。非常感谢!

Java code?Exception in thread "main" java.lang.StackOverflowError     at org.quicksortprac.kql.QuickSort1.<init>(QuickSortApp1.java:13)     at org.quicksortprac.kql.QuickSort1.<init>(QuickSortApp1.java:18)     at org.quicksortprac.kql.QuickSort1.<init>(QuickSortApp1.java:18)     at org.quicksortprac.kql.QuickSort1.<init>(QuickSortApp1.java:18)     at org.quicksortprac.kql.QuickSort1.<init>(QuickSortApp1.java:18)     at org.quicksortprac.kql.QuickSort1.<init>(QuickSortApp1.java:18)     at org.quicksortprac.kql.QuickSort1.<init>(QuickSortApp1.java:18)

代码如下:

Java code?/* Quick Sort Practice  *   */package org.quicksortprac.kql;   class QuickSort1{            // constructor     int[] Arr;     int p;     int r;     int q;     QuickSort1 qks;           public QuickSort1(int[] arr){         Arr = arr;         p=0;         r= arr.length-1;         q=0;         qks = new QuickSort1(arr);     }     public void sortingArray(int[] arr, int p, int r){         QuickSort Q = new QuickSort(arr);         q = qks.partition(p, r);         Q.sortingArray(arr, q+1, r);         Q.sortingArray(arr, q+1, r);     } //------------------------------------     public int partition(int p, int r){         int i, j;         i= p-1;         for(j=p; j<r; j++){             if(Arr[j]<Arr[r]){                 i++ ;                 int tp = Arr[i];            // A[i]  <--->  A[j]                 Arr[i] = Arr[j];                 Arr[j]= Arr[tp];             }         }         int temp = Arr[i+1];         Arr[i+1] = Arr[j];         Arr[j] = temp;         return i+1;      }// end method //-----------------------------     } // end classQuickSort //================================================ public class QuickSortApp1 {     public static void main(String[] args) {         int[] A = {2, 5, 71, 23, 13, 3, 4, 9, 30};         QuickSort sort = new QuickSort(A);         sort.sortingArray(A, 0, A.length-1);         for(int i=0; i<A.length-1; i++){             System.out.print(A[i]+" ");         }         System.out.println();     } }
 public QuickSort1(int[] arr){        Arr = arr;        p=0;        r= arr.length-1;        q=0;        qks = new QuickSort1(arr);    }

里qks在构造函数中new 自己,相当于无限new 自己,死递归了...

试试去掉qks的声明
然后把这句q = qks.partition(p, r);改成q = this.partition(p, r);

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    lotus数据列表文档个数如何实时统
    lotus代理中LS如何将字符串保存到
    在lotus BS系统里怎样方便实现统
    undefined reference timer_crea
    linux文件/usr/lib破坏了,还原后
    linux上运行system函数时,print
    Failed to open eth0
    android手机无法与eclipse或电脑
    C/C++洗牌算法源代码
    servlet技术实现用户名唯一的验证
    undefined reference timer_crea
    Failed to open eth0
    ZOJ 3700 Ever Dream 文章中单词
    TortoiseGit和msysGit安装及使用
    sharepoint 2010 获取用户信息Us
    mysql主从同步延迟方案解决的学习
    生日旅行总结
    中小板生日快乐随感
    送生日快乐桑葚乳酪小蛋糕
    写给女儿的生日快乐
    org.springframework.orm.hi
    如何用java来分隔tif格式文件
    tomcat子项目的servlet无法被
    jsp页面转换如何把参数顺便带
    方法getQueueSize为什么是sy
    Unable to load configurati
    JAVA-List对象某个字段去重的
    java.lang.NoClassDefFoundE
    java从.dat文件中读取数据
    JDWP Unable to get JNI 1.2
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |