一天一个Java基础——排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一天一个Java基础——排序相关的知识,希望对你有一定的参考价值。

一天一个系列的第一篇,看看自己能否坚持下去,加油!

 

冒泡排序与快速排序

 

冒泡排序,人生中第一次面试,nice的考官问我能不能默写下来

 

快速排序,感觉高大上,分治思想,必学

 

 1 package One;
 2 
 3 public class Test_sort {
 4 
 5     public static void main(String[] args) {
 6         int[] a = { 2, 9, 5, 4, 8, 1 };
 7         // sort(bubble_sort);
 8         quick_sort(a, 0, a.length - 1);
 9         for (int i = 0; i < a.length; i++) {
10             System.out.print(a[i] + " ");
11         }
12     }
13 
14     // 冒泡排序
15     public static int[] bubble_sort(int[] a) {
16         // 设置判断,进行优化
17         // 如果某次遍历中没有发生交换,那么就不用再进行下去,因为排序已完成
18         boolean ac = true;
19         for (int k = 1; k < a.length & ac; k++) {
20             ac = false;
21             for (int i = 0; i < a.length - 1; i++) {
22                 if (a[i] > a[i + 1]) {
23                     int temp = a[i];
24                     a[i] = a[i + 1];
25                     a[i + 1] = temp;
26                     ac = true;
27                 }
28             }
29         }
30         return a;
31     }
32 
33     // 快速排序
34     public static int[] quick_sort(int s[], int l, int r) {
35         if (l < r) {
36             // Swap(s[l], s[(l + r) / 2]); //将中间的这个数和第一个数交换 参见注1
37             int i = l, j = r, x = s[l];
38             while (i < j) {
39                 // 从右向左找第一个小于x的数
40                 while (i < j && s[j] >= x)
41                     j--;
42                 if (i < j)
43                     s[i++] = s[j];
44 
45                 // 从左向右找第一个大于等于x的数
46                 while (i < j && s[i] < x)
47                     i++;
48                 if (i < j)
49                     s[j--] = s[i];
50             }
51             s[i] = x;
52             quick_sort(s, l, i - 1); // 递归调用 从右至左
53             quick_sort(s, i + 1, r); // 从左至右
54         }
55         return s;
56     }
57 }

 

以上是关于一天一个Java基础——排序的主要内容,如果未能解决你的问题,请参考以下文章

基础排序算法,java实现(快速,冒泡,选择,堆排序,插入)

Java排序算法分析与实现:快排冒泡排序选择排序插入排序归并排序

Java八股文面试题 基础篇 -- 二分查找算法冒泡排序选择排序插入排序希尔排序快速排序

Java八股文面试题 基础篇 -- 二分查找算法冒泡排序选择排序插入排序希尔排序快速排序

排序算法之冒泡排序Java实现

Java 冒泡排序与快速排序的实现