码迷,mamicode.com
首页 > 编程语言 > 详细

冒泡排序和选择排序的Java实现

时间:2020-05-13 23:36:13      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:位置   实现   demo   and   i++   写代码   选择排序   sele   核心   

 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 < arr.length; i++) {
48             for (int j = i; j < arr.length; 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 < arr.length-1; i++) {
62             //内层循坏为每趟循环需要比较的次数。这里的 j < arr.length-i-1是因为要与j+1比较
63             for (int j = 0; j < arr.length-i-1; 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 }

 

冒泡排序和选择排序的Java实现

标签:位置   实现   demo   and   i++   写代码   选择排序   sele   核心   

原文地址:https://www.cnblogs.com/majortom/p/12885320.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!