ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

邻居好说话——冒泡排序

2019-08-12 11:58:50  阅读:250  来源: 互联网

标签:tmp 说话 Scanner student int 冒泡排序 邻居 reader


       冒泡排序大家都很熟悉了,我就简单的写写回顾一下。

一、算法描述

       基本思想:每次比较两个相邻的元素,如果它们的顺序错误就把它们交换过来。
       原理:每一趟只能确定将一个数归位。
       步骤:如果有n 个数进行排序,只需将n-1 个数归位,也就是说要进行n-1 趟操作。而“每一趟”都需要从第1 位开始进行相邻两个数的比较,将较小的一个数放在后面,比较完毕后向后挪一位继续比较下面两个相邻数的大小,重复此步骤,直到最后一个尚未归位的数。

二、代码实现

      问题描述:将n个数从小到大进行排序。

      实现代码:

 1 import java.util.Scanner;
 2 
 3 public class Main {
 4     public static void main(String[] args) {
 5         // TODO Auto-generated method stub
 6         Scanner reader = new Scanner(System.in);
 7         int n = reader.nextInt();
 8         int a[] = new int[n];
 9         for(int i=0;i<n;i++)
10             a[i]=reader.nextInt();
11         
12         int tmp;
13         for(int i=0;i<n-1;i++){
14             for(int j=0;j<n-1-i;j++){
15                 if(a[j]>a[j+1]){
16                     tmp=a[j];
17                     a[j]=a[j+1];
18                     a[j+1]=tmp;
19                 }
20             }
21         }
22         
23         for(int i=0;i<n;i++)
24             System.out.printf("%d ", a[i]);
25     }
26 }

       问题描述:输入n个学生的姓名及其分数,将学生姓名按照分数从低到高输出。

       实现代码:

 1 import java.util.Scanner;
 2 
 3 public class Main {
 4     public static void main(String[] args) {
 5         // TODO Auto-generated method stub
 6         Scanner reader = new Scanner(System.in);
 7         int n = reader.nextInt();
 8         student student[] = new student[n];
 9         for(int i=0;i<n;i++){
10             student[i] = new student(reader.next(),reader.nextInt());
11         }
12         
13         student tmp;
14         for(int i=0;i<n-1;i++){
15             for(int j=0;j<n-1-i;j++){
16                 if(student[j].score>student[j+1].score){
17                     tmp=student[j];
18                     student[j]=student[j+1];
19                     student[j+1]=tmp;
20                 }
21             }
22         }
23         
24         for(int i=0;i<n;i++)
25             System.out.printf("%s\n", student[i].name);
26     }
27 }
28 class student{
29     public String name;
30     public int score;
31     public student(String name,int score){
32         this.name=name;
33         this.score=score;
34     }
35 }

三、算法缺点

      冒泡排序的核心部分是双重嵌套循环。冒泡排序的时间复杂度是O(N^2),时间复杂度过高。

标签:tmp,说话,Scanner,student,int,冒泡排序,邻居,reader
来源: https://www.cnblogs.com/IcyYs/p/11338790.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有