冒泡排序和选择排序的Java实现
2021-01-23 04:12
标签:位置 实现 demo and i++ 写代码 选择排序 sele 核心 冒泡排序和选择排序的Java实现 标签:位置 实现 demo and i++ 写代码 选择排序 sele 核心 原文地址:https://www.cnblogs.com/majortom/p/12885320.html 1 /*
2 冒泡排序和选择排序的Java实现
3 冒泡排序:平均时间复杂度O(n方) 最坏时间复杂度O(n方) 最好时间复杂度O(n) 空间复杂度O(1) 不稳定
4 思路:冒泡排序可以说是我接触到的第一个排序算法,核心思想是依次比较相邻的两个元素,若右边的大于左边的
5 则将两个元素的位置进行调换。等到自己手写代码时,才发现自己居然一直把冒泡排序和选择排序给搞混了
6 我一直把选择排序当成冒泡排序来写......
7 Step1:从首元素开始,比较第一个与第二个元素,若第一个大于第二个,则调换两者的位置。然后比较第二个和第三
8 个元素,若第二个大于第三个,则调换两者的位置,依次类推,直至到尾元素。此时,尾元素即为本次比较中
9 最大的数据;
10 Step2:重复Step1,但是比较到尾元素的前一个即停止;
11 .....
12 源数据:6 1 2 7 9 3
13 第一趟第一次比较:1 6 2 7 9 3
14 第一趟第二次比较:1 2 6 7 9 3
15 第一趟第三次比较:1 2 6 7 9 3
16 第一趟第四次比较:1 6 2 7 9 3
17 第一趟第五次比较:1 6 2 7 3 9
18 ....
19
20 选择排序:平均时间复杂度O(n方) 最坏时间复杂度O(n方) 最好时间复杂度O(n方) 空间复杂度O(1) 不稳定
21 思路:将第一个元素依次与后面的元素进行比较,若第一个元素小于与其比较的元素的值,则交换两个元素的位置,
22 一轮下来后,最小的元素便位于最前面了;然后,将第二个元素依次与后面的元素进行比较......重复以上
23 操作
24 Step1:从首元素开始,依次与后面的元素进行比较,若数值大于与其比较的元素,则交换之;
25 Step2:从第二个元素开始,重复Step2;
26 .......
27 源数据:6 1 2 7 9 3
28 第一趟第一次比较:1 6 2 7 9 3
29 第一趟第二次比较:1 6 2 7 9 3
30 第一趟第三次比较:1 6 2 7 9 3
31 第一趟第四次比较:1 6 2 7 9 3
32 第一趟第五次比较:1 6 2 7 9 3
33 ......
34 */
35 public class BubbleSortAndSelectionSortDemo {
36 public static void main(String[] args) {
37 int[] arra={6,1,2,7,9,3};
38 int[] arrb={6,1,2,7,9,3};
39 bubbleSort(arra);
40 selectionSort(arrb);
41 System.out.println(Arrays.toString(arra));
42 System.out.println(Arrays.toString(arrb));
43 }
44 //选择排序
45 private static void selectionSort(int[] arr) {
46 int temp=0;
47 for (int i = 0; i ) {
48 for (int j = i; j ) {
49 if (arr[i]>arr[j]){
50 temp=arr[i];
51 arr[i]=arr[j];
52 arr[j]=temp;
53 }
54 }
55 }
56 }
57 //冒泡排序
58 private static void bubbleSort(int[] arr) {
59 int temp=0;
60 //外层循环为排序需要的总趟数
61 for (int i = 0; i ) {
62 //内层循坏为每趟循环需要比较的次数。这里的 j
63 for (int j = 0; j ) {
64 if(arr[j]>arr[j+1]){
65 temp=arr[j];
66 arr[j]=arr[j+1];
67 arr[j+1]=temp;
68 }
69 }
70 }
71 }
72 }