经典排序算法——冒泡和选择排序法
Java实现冒泡排序
基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素放到顶端,最终达到完全有序,首先看个动图:
我们要清楚一点,冒泡排序是相邻元素的两两比较,再看下图是否会清晰些:
输入的数据为:10 30 40 33 5 78 11 100 23 66
第一次排序,从第一个数10依次比较,若10比后者小,则进行交换,当比较到5时,10比5大,所以10就停在第四个位置,再用5去比较,后面的数都比5大,所以5就排到最后了
同理,第二次排序,仍然从第一个数30开始比较,分别跟40,33交换了顺序,比到10的时候,30比10大,所以30就停在了第三个位置,再用10去比较,10只比5大,所以排在了倒数第二个位置
依次10次比较后,得到最终排序结果
Java实现冒泡排序代码如下,代码实现过程,用一个临时变量来做中间值,从而实现交换:
1 packagemaopaopaixu;2
3 import java.util.Scanner; //使用到了scanner函数,所以需要导包
4
5 public classmaopao {6
7 public static voidmain(String[] args) {8 int i,j,k,temp; //声明变量
9 int a[]=new int[10]; //定义一个数组,长度为10
10 Scanner sc=new Scanner(System.in); //创建一个输入对象
11 System.out.println("请输入十个正整数:"); //输出
12 for(i=0;i
13 a[i]=sc.nextInt();14 }15 for(j=0;j
16 for(k=0;k
17 if(a[k]
18 temp=a[k+1]; //条件为真,进行交换位置,采用temp临时变量
19 a[k+1]=a[k];20 a[k]=temp;21 }22 }23 }24 for(i=0;i
25 System.out.print(a[i]+"\t");26 }27
28 }29
30 }
加上一些代码可以看的更清晰,如下所示:
1 packagemaopaopaixu;2
3 import java.util.Scanner; //使用到了scanner函数,所以需要导包
4
5 public classmaopao {6
7 public static voidmain(String[] args) {8 int i,j,k,temp; //声明变量
9 int a[]=new int[10]; //定义一个数组,长度为10
10 Scanner sc=new Scanner(System.in); //创建一个输入对象
11 System.out.println("请输入十个正整数:"); //输出
12 for(i=0;i
13 a[i]=sc.nextInt();14 }15 for(j=0;j
16 for(k=0;k
17 if(a[k]