栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java数组常用排序算法实例小结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java数组常用排序算法实例小结

本文实例讲述了Java数组常用排序算法。分享给大家供大家参考,具体如下:

1、冒泡排序法

SortArray_01.java

public class SortArray_01 {
    public static void main(String args[]) {
 int[] array = { 14, 5, 86, 4, 12, 3, 21, 13, 11, 2, 55, 66, 22 };
 // 创建一个初始化的一维数组array
 System.out.println("未排序的数组:");
 for (int i = 0; i < array.length; i++) {
     // 遍历array数组中的元素
     System.out.print(" " + array[i]);
     // 输出数组元素
     if ((i + 1) % 5 == 0)
  // 每5个元素一行
  System.out.println();
 }
 int mid; // 定义一个中间变量,起到临时存储数据的作用
 for (int i = 0; i < array.length; i++) {
     // 执行冒泡排序法
     for (int j = i; j < array.length; j++) {
  if (array[j] < array[i]) {
      mid = array[i];
      array[i] = array[j];
      array[j] = mid;
  }
     }
 }
 System.out.println("n使用冒泡法排序后的数组:");
 for (int i = 0; i < array.length; i++) {
     // 遍历排好序的array数组中的元素
     System.out.print(" " + array[i]);
     // 输出数组元素
     if ((i + 1) % 5 == 0)
  System.out.println();
     // 每5个元素一行
 }
    }
}

运行结果:

未排序的数组:
 14 5 86 4 12
 3 21 13 11 2
 55 66 22
使用冒泡法排序后的数组:
 2 3 4 5 11
 12 13 14 21 22
 55 66 86

2、数组递增排序

SortArray_02.java

import java.util.Arrays;
import java.util.Random;
public class SortArray_02 {
    public static void main(String[] args) {
 Random rd = new Random();
 int[] array = new int[15];
 // 声明数组
 System.out.println("没有使用sort方法前的数组:");
 for (int i = 0; i < array.length; i++) {
     // 利用随机数随意产生15个0~20之间的随机数
     array[i] = rd.nextInt(20);
     // 给array数组赋值
     System.out.print(" " + array[i]);
     if ((i + 1) % 5 == 0)
  System.out.println();
 }
 Arrays.sort(array);
 // 对array数组进行升序排序
 System.out.println("n使用sort方法后的数组:");
 for (int i = 0; i < array.length; i++) {
     // 将array数组中的数据输出
     System.out.print(" " + array[i]);
     if ((i + 1) % 5 == 0)
  System.out.println();
 }
    }
}

运行结果:

没有使用sort方法前的数组:
 13 12 11 18 11
 11 17 13 11 8
 1 0 9 18 3

使用sort方法后的数组:
 0 1 3 8 9
 11 11 11 11 12
 13 13 17 18 18

3、快速排序法

SortArray_03.java

public class SortArray_03 {
    public static void main(String args[]) {
 int[] intArray = { 12, 11, 45, 6, 8, 43, 40, 57, 3, 20, 15, 88, 23 };
 System.out.println("排序前的数组:");
 for (int i = 0; i < intArray.length; i++) {
     System.out.print(" " + intArray[i]);
     // 输出数组元素
     if ((i + 1) % 5 == 0)
  // 每5个元素一行
  System.out.println();
 }
 System.out.println();
 int[] b = quickSort(intArray, 0, intArray.length - 1);
 // 调用quickSort
 System.out.println("使用快迅排序法后的数组:");
 for (int i = 0; i < b.length; i++) {
     System.out.print(" " + b[i]);
     if ((i + 1) % 5 == 0)
  // 每5个元素一行
  System.out.println();
 }
    }
    public static int getMiddle(int[] array, int left, int right) {
 int temp;
 // 进行一趟快速排序,返回中心点位置
 int mid = array[left];
 // 把中心置于a[0]
 while (left < right) {
     while (left < right && array[right] >= mid)
  right--;
     temp = array[right];
     // 将比中心点小的数据移动到左边
     array[right] = array[left];
     array[left] = temp;
     while (left < right && array[left] <= mid)
  left++;
     temp = array[right];
     // 将比中心点大的数据移动到右边
     array[right] = array[left];
     array[left] = temp;
 }
 array[left] = mid;
 // 中心移到正确位置
 return left; // 返回中心点
    }
    public static int[] quickSort(int[] array, int left, int right) {// 快速排序法
 if (left < right - 1) {
     // 如果开始点和结点没有重叠的时候,也就是指针没有执行到结尾
     int mid = getMiddle(array, left, right);
     // 重新获取中间点
     quickSort(array, left, mid - 1);
     quickSort(array, mid + 1, right);
 }
 return array;
    }
}

运行结果:

排序前的数组:
 12 11 45 6 8
 43 40 57 3 20
 15 88 23
使用快迅排序法后的数组:
 3 6 8 11 12
 20 15 23 40 43
 45 88 57

4、选择排序法

SortArray_04.java

public class SortArray_04 {
    public static void main(String args[]) {
 int[] array = { 14, 5, 86, 4, 12, 3, 51, 13, 11, 2, 32, 6, 45, 34 };
 // 创建一个初始化的一维数组array
 int keyValue; // 表示最小的元素值
 int index; // 表示最小的元素值的下标
 int temp; // 中间变量
 System.out.println("未排序的数组:");
 for (int i = 0; i < array.length; i++) {
     // 遍历array数组中的元素
     System.out.print(" " + array[i]);
     // 输出数组元素
     if ((i + 1) % 5 == 0)
  // 每5个元素一行
  System.out.println();
 }
 for (int i = 0; i < array.length; i++) {
     // 使用选择排序法的核心
     index = i;
     keyValue = array[i];
     for (int j = i; j < array.length; j++)
  if (array[j] < keyValue) {
      index = j;
      keyValue = array[j];
  }
     temp = array[i];
     array[i] = array[index];
     array[index] = temp;
 }
 System.out.println("n使用选择排序法后的数组:");
 for (int i = 0; i < array.length; i++) {
     // 遍历排好序的array数组中的元素
     System.out.print(" " + array[i]);
     // 输出数组元素
     if ((i + 1) % 5 == 0)
  System.out.println();
     // 每5个元素一行
 }
    }
}

运行结果:

未排序的数组:
 14 5 86 4 12
 3 51 13 11 2
 32 6 45 34
使用选择排序法后的数组:
 2 3 4 5 6
 11 12 13 14 32
 34 45 51 86

PS:这里再为大家推荐一款关于排序的演示工具供大家参考:

在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具:
http://tools.jb51.net/aideddesign/paixu_ys

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/142466.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号