Java选择排序,插入排序,快速排序
Posted Andy 胡
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java选择排序,插入排序,快速排序相关的知识,希望对你有一定的参考价值。
public class Test { public static void main(String[] args) { int a[] = { 1, 2, 3, 4, 5 }; // 选择排序(a); // 插入排序(a); quicksort(a, 0, a.length - 1); System.out.print("排序后:"); for (int n : a) { System.out.print(n + " "); } } static void 选择排序(int[] a) { int pos = 0; for (int i = 0; i < a.length - 1; i++) { pos = i; // 定位到i之后的最值 for (int j = i; j < a.length; j++) { if (a[pos] < a[j]) { pos = j; } } // 最值和i值交换 int t = a[pos]; a[pos] = a[i]; a[i] = t; } } static void 插入排序(int[] arr) { for (int i = 1; i < arr.length; i++) { System.out.print(i + ":"); // 假定(0->(j-1))是有序的,看j排在哪里 for (int j = i; j > 0; j--) { if (arr[j] > arr[j - 1]) { int temp = arr[j]; arr[j] = arr[j - 1]; arr[j - 1] = temp; } else { // 假定前面是有序的,则只需要交换一次即可 break; } } for (int n : arr) { System.out.print(n + " "); } System.out.println(); } } static void quicksort(int arr[], int left, int right) { if (left < right) { // 定位最左 int key = arr[left]; int i = left; int j = right; while (i < j) { while (i < j && arr[j] < key) { // 高标左移← j--; } if (arr[i] != arr[j]) { // 高位:小的往左边拉 arr[i] = arr[j]; } while (i < j && arr[i] > key) { // 低标右移→ i++; } if (arr[i] != arr[j]) { // 低位:大的往右边拉 arr[j] = arr[i]; } } arr[i] = key; quicksort(arr, left, i - 1); quicksort(arr, i + 1, right); } } }
以上是关于Java选择排序,插入排序,快速排序的主要内容,如果未能解决你的问题,请参考以下文章
Java八股文面试题 基础篇 -- 二分查找算法冒泡排序选择排序插入排序希尔排序快速排序
Java八股文面试题 基础篇 -- 二分查找算法冒泡排序选择排序插入排序希尔排序快速排序