针对数组的三中排序方式:冒泡排序,选择排序,插入排序

AVA在运用数组进行排序时,已经封装好了排序的方法:快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现。

普通的算法包括了:

1.冒泡法是运用遍历数组进行比较,通过不断的比较将最小值或者最大值一个一个的遍历出来。

2.选择排序法是将数组的第一个数据作为最大或者最小的值,然后通过比较循环,输出有序的数组。

3.插入排序是选择一个数组中的数据,通过不断的插入比较最后进行排序。下面我就将他们的实现方法一一详解供大家参考。

 

 1 /**
 2  * 数组排序操作
 3  * 
 4  * @author lpp
 5  * 
 6  */
 7 public class Sort {
 8     public static void main(String[] args) {
 9         int[] arr = { 5,1,4,2,6};
10         // bubbleSort(arr);
11         // chooseSort(arr);
12         insertSort(arr);
13     }
14 
15     // 冒泡排序
16     public static void bubbleSort(int[] arr) {
17         // 外层循环只控制次数,内层循环控制逻辑
18         int temp = 0;
19         for (int i = 0; i < arr.length; i++) {
20             for (int j = 0; j < arr.length - i - 1; j++) {
21                 if (arr[j] > arr[j + 1]) {
22                     // 相互交换
23                     temp = arr[j];
24                     arr[j] = arr[j + 1];
25                     arr[j + 1] = temp;
26                 }
27             }
28         }
29 
30         // 显示
31         for (int i : arr) {
32             System.out.println(i);
33         }
34     }
35 
36     // 选择排序
37     public static void chooseSort(int[] arr) {
38         int minTemp = 0;
39         for (int i = 0; i < arr.length - 1; i++) {
40             for (int j = i + 1; j < arr.length; j++) {
41                 if (arr[j] < arr[i]) {
42                     // 交换数据
43                     minTemp = arr[j];
44                     arr[j] = arr[i];
45                     arr[i] = minTemp;
46                 }
47             }
48         }
49 
50         // 显示
51         for (int i : arr) {
52             System.out.println(i);
53         }
54     }
55 
56     // 插入排序{2,1,4,3}
57     public static void insertSort(int[] arr) {
58         // 被选择的数
59         int select = 0;
60         for (int i = 1; i < arr.length; i++) {
61             //记录要被插入的数值
62             select = arr[i];
63             int j = 0;
64             for (j = i; j > 0 && arr[j - 1] >= select; j--) {
65                 //此处执行的是一个右移操作
66                 arr[j] = arr[j - 1];
67             }
68             // 把小的值向前插入
69             arr[j] = select;
70         }
71 
72         // 显示
73         for (int i : arr) {
74             System.out.println(i);
75         }
76     }
77 }

 

posted @ 2016-09-13 16:13  我所向往的美好  阅读(1644)  评论(0编辑  收藏  举报