排序算法就是基础中的基础,程序员必知!

  一、插入排序

   1)简单插入排序
  (1)基本思想:在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。例:对9, 2, 7, 19, 100, 97排序

  程序员必知8大排序

程序员必知8大排序

得到结果:

程序员必知8大排序

java代码:

 1 package Insertion_Sort;
 2 
 3 import java.util.Arrays;
 4 
 5 /**
 6  * 直接插入排序(Straigh Insertion Sort) 内部排序、O(n^2)、稳定 原理:从待排序的数中选出一个来,插入到前面的合适位置。
 7  * 过程:思路上从待排序的数据中选出一个,插入到前面合适的位置, 耗时点在插入方面,合适的位置意味着我们需要进行比较找出哪是
 8  * 合适的位置,举个例子:对于9,2,7,19,100,97,63,208,55,78这组数,
 9  * 第一个数9前面没有,不做操作,当第一个数完后,剩下的数就是待排序的数, 我们将要从除去9开始的书中选出一个插入到前面合适的位置,
10  * 拿到2后,放在temp上,进行注释中的2处的代码, 2处的代码就是通过循环找出这个合适的位置, 发现比temp大的数,立即将该数向后移动一位
11  * (这样做的目的是:前面需要空出一位来进行插入), 最后通过注释3处的代码将数插入。 本排序适合:基本有序的数据
12  * 
13  * @author cq
14  * 
15  */
16 public class Straigh_ISort {
17 
18     static int data[] = { 9, 2, 7, 19, 100, 97, 63, 208, 55, 78 };
19 
20     public static void insertSort() {
21         int L = data.length;
22         int temp;
23         for (int i = 1; i < L; i++) {// -----1-----
24             if (data[i] < data[i - 1]) {
25                 temp = data[i]; // 将待插入的记录用temp保存下来
26                 int j = i - 1;
27                 while ((j >= 0) && temp < data[j]) {// -----2-----
28                     data[j + 1] = data[j]; // 比待插入记录大的位置后移
29                     j--;
30                 }
31                 data[j + 1] = temp; // 插入到正确位置 -----3-----
32             }
33         }
34     }
35 
36     static void print(int[] a) {
37         System.out.println(Arrays.toString(a));
38     }
39 
40     public static void main(String[] args) {
41         print(data);
42         insertSort();
43         print(data);
44 
45     }
46 
47 }
View Code

相关文章:

  • 2021-11-11
  • 2021-06-07
  • 2021-05-26
  • 2021-06-17
  • 2022-12-23
猜你喜欢
  • 2021-07-11
  • 2022-12-23
  • 2022-01-19
  • 2021-11-11
  • 2021-08-15
相关资源
相似解决方案