算法排序

Posted yanyojun

tags:

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

 1 package main;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.BufferedWriter;
 5 import java.io.FileReader;
 6 import java.io.FileWriter;
 7 import java.util.*;
 8 import java.util.concurrent.ExecutorService;
 9 import java.util.concurrent.Executors;
10 import java.util.concurrent.locks.Condition;
11 import java.util.concurrent.locks.Lock;
12 import java.util.concurrent.locks.ReentrantLock;
13 
14 public class Main {
15     public static void main(String[] args) {
16         int[] array = {100, 0, 1, 2, 4, 3, 5, 4, 5, 6, 7, 8, 9, 10, 11, 12};
17 
18         //冒泡排序
19         for (int i = 0; i < array.length; i++) {
20             boolean flag = false;
21             for (int j = 0; j < array.length - i - 1; j++) {
22                 if (array[j] > array[j + 1]) {
23                     int temp = array[j];
24                     array[j] = array[j + 1];
25                     array[j + 1] = temp;
26                     flag = true;
27                 }
28             }
29             if (flag) {
30                 break;
31             }
32         }
33         System.out.println(Arrays.toString(array));
34 
35         int[] array_2 = {100, 0, 1, 2, 4, 3, 5, 4, 5, 6, 7, 8, 9, 10, 11, 12};
36         //简单选择排序
37         for (int i = 0; i < array.length; i++) {
38             int loc = i;
39             for (int j = i + 1; j < array.length; j++) {
40                 if (array_2[j] < array_2[loc]) {
41                     loc = j;
42                 }
43             }
44             if (loc != i) {
45                 int temp = array_2[i];
46                 array_2[i] = array_2[loc];
47                 array_2[loc] = temp;
48             }
49         }
50         System.out.println(Arrays.toString(array_2));
51 
52         int[] array_3 = {3,5,4,2,1,6,7,8};
53         //快速排序
54         quitSort(array_3,0,array_3.length-1);
55         System.out.println(Arrays.toString(array_3));
56 
57     }
58 
59     static void quitSort(int[] array, int left, int right) {
60         int i = left;
61         int j = right;
62         if (left >= right) {
63             return;
64         }
65         int base = array[i];
66         while (i < j) {
67             while (i < j && array[j] >= base) {
68                 j--;
69             }
70 
71             if (j > i) {
72                 array[i] = array[j];
73             }
74             while (i < j && array[i] <= base) {
75                 i++;
76             }
77             if (i < j) {
78                 array[j] = array[i];
79             }
80         }
81         array[i] = base;
82         quitSort(array,left,i-1);
83         quitSort(array,i+1,right);
84     }
85 }

 

以上是关于算法排序的主要内容,如果未能解决你的问题,请参考以下文章

算法排序之堆排序

快速排序-递归实现

从搜索文档中查找最小片段的算法?

在第6731次释放指针后双重免费或损坏

TimSort算法分析

以下代码片段的算法复杂度