Java冒泡排序法

Posted 高欣的博客

tags:

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

我写的大部分博客,基本上都是留作日后回忆知识点所用,当然,如果我的文章能帮到道友们!我会更加的开心,与荣幸!如果有错误之处,请海涵,并指出问题所在,看见后我必加以修改,感谢!共勉。一起进步!

之前看过的一篇博客之中,总结了排序的效率的问题,基本上(不说死)

冒泡<选择<插入<快速(快速排序法的效率最高)

冒泡排序法:

 

概念:

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。
这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

代码实现(以蓝桥杯中的问题为例!):

注意一点:数组中涉及循环时,例如:

for(int i = 0;i<n;i++)
{
	a[i] = sc.nextInt();
}  

由于是从0开始,所以在i<n的位置处,就尽量不要马虎的加上“=”

 1 /**
 2 问题描述
 3   给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
 4 输入格式
 5   第一行为一个整数n。
 6   第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
 7 输出格式
 8   输出一行,按从小到大的顺序输出排序后的数列。
 9 样例输入
10 5
11 8 3 6 4 9
12 样例输出
13 3 4 6 8 9
14 **/
15 import java.util.Scanner;
16 
17 public class Main {
18     public static void main(String[] args) {
19         Scanner sc = new Scanner(System.in);
20         int n = sc.nextInt();
21         if (n >= 1 && n <= 200) {
22             int[] a = new int[n];
23             for (int i = 0; i < n; i++) {
24                 a[i] = sc.nextInt();
25                 if(a[i]<-10000||a[i]>10000){
26                     return;
27                 }
28             }
29 
30             // 这里为最主要的部分
31             for (int i = 0; i < a.length - 1; i++) {
32                 for (int j = 0; j < a.length - i - 1; j++) {
33                     if (a[j] > a[j + 1]) {
34                         int temp = a[j];
35                         a[j] = a[j + 1];
36                         a[j + 1] = temp;
37                     }
38                 }
39             }
40             for (int i = 0; i < a.length; i++) {
41                 System.out.print(a[i] + " ");
42             }
43 
44         }
45     }
46 }

优缺点:

优点:比较简单,空间复杂度较低,相比于其他的排序方法,是比较稳定的

缺点:时间复杂度相对来说较高,相比于其他的排序方法,效率比较慢

 

选择排序法:

 

概念:

快速排序(Quicksort)是对冒泡排序的一种改进。
快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

代码实现(以蓝桥杯中的问题为例!):

 最近忙于别的课程,有时间就会就会继续写。共勉,加油!时间不多了!

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

冒泡排序法

简单排序算法:冒泡法排序(Java)

java,冒泡排序法,网上查阅

Java冒泡排序法

重温基础算法内部排序之冒泡排序法

Java冒泡排序法实现