排序就是将输入的数字按照从小到大的顺序进行排列。由于排序是一个比较基础的问题,所以排序算法的种类也比较多。最近学习了几种常见的排序算法,下面介绍如何使用java代码实现对数组进行从下到大排序。
一、冒泡排序
1、概念
冒泡排序通过序列左边开始比较相邻位置数字的大小,左边数字大于右边了交换位置,只到最大的到最右边,然后再从左边开始比较相邻位置的数字,左边大于右边交换位置,只到最大的到右边第二个位置,循环操作,在这个过程中,数字会像泡泡一样,慢慢从左往右“浮”到序列的右端,所以这个算法才被称为“冒泡排序”。看图解理解此概念很容易。
2、图解
3、代码实现
public class BubbleSortTest { public static void main(String[] args) { int[] arr = new int[]{11, 2, 3, 5, 7, 4, 10, 8, 9}; BubbleSort(arr); System.out.println(Arrays.toString(arr)); } private static void BubbleSort(int[] arr) { //从右边开始循环遍历数组 for (int i = arr.length - 1; i > 0; i--) { //遍历未排序的数组 for (int j = 0; j < i; j++) { //相邻位置左边值大于右边,交换位置,将最大值最后换到待排序列最右边 if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } }
二、选择排序
1、概念
选择排序就是从左边第一个开始,遍历右边序列找到最小的值与左边第一个数据交换位置,这样左边第一个数字就是整个序列最小的,然后从左边第二个开始,遍历右边的序列找到最小的值与左边第二个交换位置,依次类推,只到右边待排序的数据个数为0,结束循环,此时数组排序成功,因为每次循环后,左边的序列都是有序的。看图解理解此概念很容易。
2、图解
3、代码实现
public class SelectQueueTest { public static void main(String[] args) { int[] arr = new int[]{1, 4, 7, 3, 7, 5, 7, 4, 9, 0, 8, 6, 3, 3, 4, 3, 4}; SelectQueue(arr); System.out.println(Arrays.toString(arr)); } private static void SelectQueue(int[] arr) { //总左边第一个开始,循环遍历每一个值 for (int i = 0; i < arr.length; i++) { //默认序列中最小值的位置是待排序列第一个 int min = i; //找到比默认最小值更小的,更新默认最小值位置 for (int j = i + 1; j < arr.length; j++) { if (arr[min] > arr[j]) { min = j; } } //默认最小值位置如果更新了,说明最小值在右边序列中,交换数值 if (min != i) { int temp = arr[i]; arr[i] = arr[min]; arr[min] = temp; } } } }