关闭

排序算法系列一:冒泡排序和快速排序

157人阅读 评论(0) 收藏 举报
分类:

温习一下排序算法,随手写了两个例子,请大家帮忙优化一下代码。

 

 

package com.zqh.test;

public class SortAndDelete {

    public static void main(String[] args) {
 // TODO Auto-generated method stub

 Integer[] i1 = { 10, 4, 9, 23, 1, 45, 27, 5, 2 };

 // bubbleSort(i1);

 quickSort(i1, 0, i1.length - 1);
 print(i1);

    }

    /**
     * 交换数组中两个元素的值
     *
     * @param integers
     * @param low
     * @param upper
     */
    public static void elementChange(Integer[] integers, int low, int upper) {
 Integer tmpInteger = integers[low];
 integers[low] = integers[upper];
 integers[upper] = tmpInteger;
    }

    /**
     * 冒泡排序
     *
     * @param integers
     */
    public static void bubbleSort(Integer[] integers) {
 for (int i = 0; i < integers.length; i++) {
     for (int j = i + 1; j < integers.length; j++) {
  if (integers[i] > integers[j]) {
      elementChange(integers, i, j);
  }
     }
 }
    }

    // public static Integer[][] quickSort(Integer[] integers){
    //
    // }

    public static void print(Integer[] integers) {
 for (int i = 0; i < integers.length; i++) {
     System.out.print(i < integers.length - 1 ? integers[i] + "," : integers[i]);
 }
    }

    public static void quickSort(Integer[] integer, int low, int upper) {
 if (low >= upper) {
     return;
 }

 Integer key = integer[low];
 int keyflag = low;
 int i = low;
 int j = upper;

 while (i < j) {
     while (integer[j] > key && j > i) {
  j--;
     }
     if (integer[j] < key && j > i) {
  elementChange(integer, j, keyflag);
  keyflag = j;
  print(integer);
  System.out.println("      ---key=" + key + ",keyflag=" + keyflag + ",j=" + j + ",i=" + i);
     } else {
  continue;
     }

     while (integer[i] < key && i < j) {
  i++;
     }
     if (integer[i] > key && i < j) {
  elementChange(integer, i, keyflag);
  keyflag = i;
  print(integer);
  System.out.println("      ---key=" + key + ",keyflag=" + keyflag + ",j=" + j + ",i=" + i);
     }
 }

 quickSort(integer, low, keyflag - 1);
 // System.out.println("第一个");
 quickSort(integer, keyflag + 1, upper);
 // System.out.println("第二个");

    }

    public static void oneSort() {

    }

}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:45649次
    • 积分:0
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:5篇
    • 译文:0篇
    • 评论:10条
    最新评论