排序算法(三) 快速排序
来源:互联网 发布:网络靶场如何构建 编辑:程序博客网 时间:2024/05/21 10:43
package study;public class SortNumberTest { public static void main(String[] args) { Test1(); } public static void Test1(){ System.out.println("快速排序"); int[] numbers3={72,6,57,72,60,42,83,73,48,85}; //int[] numbers3={72,72,72}; print(numbers3); quickSort(numbers3,0, numbers3.length - 1); System.out.println("..................................."); } //快速排序 public static void quickSort(int[] numbers, int start, int end) { System.out.println("again:"+"start="+start+",end="+end); if (start < end) { int base = numbers[start]; // 选定的基准值(第一个数值作为基准值) int i = start, j = end; do { while ((numbers[i] > base) && (i < end)) i++; while ((numbers[j] < base) && (j > start)) j--; if (i <= j) { //这里应该含等号。 //1.中间有一个值为基准值,i,j相等,应再各自前进一步,基准值不用再参加排序(但不这么做不会造成程序错误,只是效率降低) //2.如果基准值为最大值,不含等号会造成i不能前进一步,造成死循环(造成死循环) swap(numbers,i,j); print(numbers); i++; j--; } } while (i <= j); //也应含等号,与上面的1同理,中间有一个值为基准值,i,j相等,应再各自前进一步,基准值不用再参加排序(但不这么做不会造成程序错误,只是效率降低) if (start < j) quickSort(numbers, start, j); if (end > i) quickSort(numbers, i, end); } } private static void swap(int[] numbers, int a, int b) { int t = numbers[a]; numbers[a] = numbers[b]; numbers[b] = t; } private static void print(int[] numbers){ for (int i = 0; i < numbers.length; i++) { System.out.print(numbers[i]+" "); } System.out.println(); } }
0 0
- 【十七】排序算法(三)--快速排序
- 排序算法(三) 快速排序
- 算法学习(排序三)快速排序
- 排序算法(三)------冒泡排序和快速排序
- 常见排序算法整理(三)----归并排序、快速排序
- 算法系列(三) 快速排序
- 分治算法三(随机化快速排序)
- 算法导论(三) 快速排序
- 【算法导论】排序 (三):快速排序 深入分析
- 排序算法-快速排序(三种实现方案)
- 数据结构值排序算法(三)-快速排序
- java算法之三快速排序(交换排序)
- 排序算法【java实现】(三)快速排序
- 三大排序算法(快速排序,归并排序,堆排序)
- 三种排序算法(归并排序、快速排序,堆排序)
- 排序算法三之快速排序
- 三种基本排序算法+快速排序
- 排序算法07:三向快速排序
- MongoDB 简介
- Ubuntu 美化
- Glide加载带边框的图片
- Rxjava(Subject)-AsyncSubject--代码分析
- 系统编程基础知识
- 排序算法(三) 快速排序
- java HashMap 原理 数据结构
- 数据库三大范式
- android双击标题栏title回到顶端
- 数据同步流程方案记录
- flv视频格式解析
- Maven仓库介绍
- iOS应用跳转到appstore更新和评价
- 字典的快速赋值 setValuesForKeysWithDictionary