首页 > 编程知识 正文

java编程思想,java 排序算法

时间:2023-05-05 19:33:02 阅读:19901 作者:2271

/**快速排序*思想: *给出整数数组,相对于第一个元素,start=0, end=arr.length-1 *次快速通道循环: *第1次:如果从end开始先比较,数组元素大于基准值,则end--,继续比较前一个元素,将该值设定在start位置(第一个start是第一个元素位置) 2次)如果元素值大于基准值,则停止比较,将该值置于end位置(end位置是指上次周转中小于基准值的元素的位置),第3次:从end开始先进行比较,如果数组元素大于基准值,则继续进行end--、前一个元素的比较。 )出现要素值小于基准值的要素时停止比较。 将此值置于start位置。 第二次start不再是第一个元素位置。 * .重复比较。 如果start=end,则结束循环,用基准值替换start位置。 返回一次循环后的start位置*返回一次循环后,基准值左侧的元素都小于基准值。 同样,所有右边的元素都调用大于参考值的*递归循环,对参考值的左边和右边的元素进行快速排序*/public class quick sort { publicstaticvoidmain (字符串) ings } int end=numbers.length-1; qort(Numbers,start,end ); for(intnumber3360numbers ) system.out.print ) number ' ); } } /** * * @param arr数组* @param start数组的第一个元素* @param end数组的最后一个元素*/publicstaticvoidqsort (int [ ] arr、int start、int end //递归调用快速排序循环qsort (arr,start,key-1 ); qort(arr,key 1,end ); } } /** *次快速排序循环* @param numbers排序数组* @param start数组的第一个元素* @param end数组的最后一个元素* @return下一次递归使用的基线*/publicstation int start,intend(//临时变量存储基准值int temp=numbers[start]; 如果start=end,则一个快速通道循环while(startend ) /从后面开始早早小于基准值的元素while ) startendnumbers[end]temp ) { end--; //将小于基准值的值设定为开始位置if (开始!=end (numbers [开始]=numbers [结束]; //进行后尽早大于基准值的元素while ({ startendnumbers [ start ] temp ) start; //将大于基准值的值设定为end位置if(start!=end (numbers [ end ]=numbers [ start ]; 当start=end时,循环结束一次,以start位置为基准值numbers[start]=temp; //作为递归间隔点返回开始,返回一个周期后的开始位置}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。