From 5e7ebf99f9b5f1e243420f99fcef31fe0a3d65e6 Mon Sep 17 00:00:00 2001 From: fanxb Date: Thu, 16 May 2019 19:59:29 +0800 Subject: [PATCH] add --- 3.排序算法/src/Main.java | 6 +++ 3.排序算法/src/sort/exchange/BubbleSort.java | 27 +++++++++++++ 3.排序算法/src/sort/exchange/QuickSort.java | 42 ++++++++++++++++++++ 3.排序算法/src/util/ArrayUtil.java | 17 ++++++++ 4 files changed, 92 insertions(+) create mode 100644 3.排序算法/src/Main.java create mode 100644 3.排序算法/src/sort/exchange/BubbleSort.java create mode 100644 3.排序算法/src/sort/exchange/QuickSort.java create mode 100644 3.排序算法/src/util/ArrayUtil.java diff --git a/3.排序算法/src/Main.java b/3.排序算法/src/Main.java new file mode 100644 index 0000000..8591b09 --- /dev/null +++ b/3.排序算法/src/Main.java @@ -0,0 +1,6 @@ +public class Main { + + public static void main(String[] args) { + System.out.println("Hello World!"); + } +} diff --git a/3.排序算法/src/sort/exchange/BubbleSort.java b/3.排序算法/src/sort/exchange/BubbleSort.java new file mode 100644 index 0000000..687d6e4 --- /dev/null +++ b/3.排序算法/src/sort/exchange/BubbleSort.java @@ -0,0 +1,27 @@ +package sort.exchange; + +import java.util.Arrays; + +/** + * 类功能简述:冒泡排序 + * 类功能详述:冒泡排序故名思义就是每轮循环将一个最大或者最小的数放到无序部分的顶部,知道所有的数都是有序的 + * + * @author fanxb + * @date 2019/5/15 17:27 + */ +public class BubbleSort { + + public static void main(String[] args) { + int[] arr = {4, 12, 2, 8, 453, 1, 59, 33}; + for (int i = 0, length = arr.length; i < arr.length - 1; i++) { + for (int j = 0, tempLength = length - 1 - i; j < tempLength; j++) { + if (arr[j] > arr[j + 1]) { + int temp = arr[j]; + arr[j] = arr[j + 1]; + arr[j + 1] = temp; + } + } + System.out.println(Arrays.toString(arr)); + } + } +} diff --git a/3.排序算法/src/sort/exchange/QuickSort.java b/3.排序算法/src/sort/exchange/QuickSort.java new file mode 100644 index 0000000..09f9fd1 --- /dev/null +++ b/3.排序算法/src/sort/exchange/QuickSort.java @@ -0,0 +1,42 @@ +package sort.exchange; + +import util.ArrayUtil; + +import java.util.Arrays; + +/** + * 类功能简述:快速排序 + * 类功能详述:使用了分治的思想,先取一个数,然后让这个数的左边都是小于等于它的,右边都大于等于它,然后左边右边分布做同样的处理, + * 直到所有的数都有序 + * + * @author fanxb + * @date 2019/5/15 17:35 + */ +public class QuickSort { + + private static void deal(Integer[] arr, int start, int end) { + if (start >= end) { + return; + } + int base = arr[start], i = start, j = end; + while (i < j) { + while (arr[i] <= base && i < end) { + i++; + } + while (arr[j] >= base && j > start) { + j--; + } + if (i < j) { + ArrayUtil.swap(arr, i, j); + } + } + System.out.println(Arrays.toString(arr)); + deal(arr, start, i); + deal(arr, j, end); + } + + public static void main(String[] args) { + Integer[] arr = {4, 3, 1, 89, 5}; + deal(arr, 0, arr.length - 1); + } +} diff --git a/3.排序算法/src/util/ArrayUtil.java b/3.排序算法/src/util/ArrayUtil.java new file mode 100644 index 0000000..ec0a71c --- /dev/null +++ b/3.排序算法/src/util/ArrayUtil.java @@ -0,0 +1,17 @@ +package util; + +/** + * 类功能简述:数组工具栏 + * 类功能详述: + * + * @author fanxb + * @date 2019/5/15 17:43 + */ +public class ArrayUtil { + + public static void swap(Object[] arr, int i, int j) { + Object temp = arr[i]; + arr[i] = arr[j]; + arr[j] = temp; + } +}