您的位置:首页 > 编程语言 > Java开发

java学习之数组排序

2011-11-25 12:29 453 查看


public class SortAll {   

/**

   * 冒泡排序,选择排序,插入排序,希尔(Shell)排序 Java的实现

   */  

public static void main(String[]
args) {   

   int[] i = { 30, 2, 58, 12, 4, 78, 3, 23, 32, 43, 96,
187 };   

   

System.out.println("----冒泡排序的结果:");   

    maoPao(i);   

System.out.println();

   

    System.out.println("----选择排序的结果:");   

xuanZe(i);   

    System.out.println();   

   

System.out.println("----插入排序的结果:");   

    chaRu(i);   

    System.out.println();   

   

System.out.println("----希尔(Shell)排序的结果:");   

    shell(i);   

}   

  

// 冒泡排序   

public static void maoPao(int[]
x) {   

for (int i
= 0; i < x.length; i++) {   

    for (int j = i + 1;
j < x.length; j++) {   

     if (x[i] > x[j]) {   

      int temp = x[i];   

       x[i] = x[j];   

       x[j] = temp;   

      }   

     }   

    }   

   for (int i : x) {   

     System.out.print(i + " ");   

    }   

}   

  

// 选择排序   

public static void xuanZe(int[]
x) {   

for (int i
= 0; i < x.length; i++) {   

    int lowerIndex = i;   

    // 找出最小的一个索引   

    for (int j = i + 1;
j < x.length; j++) {   

     if (x[j] < x[lowerIndex]) {   

       lowerIndex = j;   

      }   

}   

    // 交换   

    int temp = x[i];   

     x[i] = x[lowerIndex];   

     x[lowerIndex] = temp;   

    }   

for (int i
: x) {   

     System.out.print(i + " ");   

    }    

}   

  

// 插入排序   

public static void chaRu(int[]
x) {   

for (int i
= 1; i < x.length; i++) {// i从一开始,因为第一个数已经是排好序的啦   

    for (int j = i; j > 0;
j--) {   

     if (x[j] < x[j - 1]) {   

      int temp = x[j];   

       x[j] = x[j - 1];   

       x[j - 1] = temp;   

      }   

     }   

    }   

   for (int i : x) {   

     System.out.print(i + " ");   

    }   

}   

  

// 希尔排序   

public static void shell(int[]
x) {   

   // 分组   

for (int increment
= x.length / 2; increment > 0;
increment /= 2) {   

    // 每个组内排序   

    for (int i = increment; i < x.length; i++)
{   

     int temp = x[i];   

     int j = 0;   

    

for (j = i; j >= increment; j -= increment) {   

      if (temp < x[j - increment]) {   

        x[j] = x[j - increment];   

       } else {   

       break;   

       }   

      }   

      x[j] = temp;   

     }   

    }   

  

   for (int i : x) {   

     System.out.print(i + " ");   

    }   

}   

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java shell string