Java数组常用排序算法实例小结
发布时间:2020-05-23 18:21:34 所属栏目:Java 来源:互联网
导读:本文实例讲述了Java数组常用排序算法。分享给大家供大家参考,具体如下:1、冒泡排序法
|
本文实例讲述了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,45,6,8,43,40,57,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,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 right) {// 快速排序法
if (left < right - 1) {
// 如果开始点和结点没有重叠的时候,也就是指针没有执行到结尾
int mid = getMiddle(array,left,right);
// 重新获取中间点
quickSort(array,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,51,32,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:这里再为大家推荐一款关于排序的演示工具供大家参考: 在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具: 更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》 希望本文所述对大家java程序设计有所帮助。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
