1.冒泡排序
冒泡排序(Bubble Sort)是最经典也是最简单的排序算法之一。
原理:比较相邻的两个元素,将值大的元素交换到右边(降序则相反).
步骤:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
package first;
import java.util.Scanner;
public class Test1 {
public static void main(String args[]){
Scanner input=new Scanner(System.in);
System.out.print("请输入任意10个数");
int[] nums=new int[10];
for(int i=1;i<11;i++){
System.out.println("输入第"+i+"个数");
nums[i-1]=input.nextInt();
}
System.out.println("开始排序==============================");
int temp;
//控制比较多少轮,一共十个数所以只需比较九轮
for(int i=0;i<nums.length-1;i++){
//控制每轮比较多少次,每次比较完一轮,比较的次数就少了一次
for(int j=0;j<nums.length-1-i;j++){
if(nums[j]>nums[j+1]){
temp=nums[j];
nums[j]=nums[j+1];
nums[j+1]=temp;
}
}
}
for(int n=0;n<nums.length;n++){
System.out.print(nums[n]+" ");
}
}
}
结果:
请输入任意10个数输入第1个数
11
输入第2个数
22
输入第3个数
33
输入第4个数
44
输入第5个数
55
输入第6个数
66
输入第7个数
77
输入第8个数
88
输入第9个数
99
输入第10个数
89
开始排序==============================
11 22 33 44 55 66 77 88 89 99
2.选择排序
选择排序是一种简单直观的排序算法,其基本原理如下:对于给定的一组记录,经过第一轮比较后得到最小的记录,然后将该记录的位置与第一个记录的位置交换;接着对不包括第一个记录以外的
其他记录进行第二次比较,得到最小记录并与第二个位置记录交换;重复该过程,知道进行比较的记录只剩下一个为止。简单选择排序的性能要优于冒泡排序。
public class Test2 {
public static void main(String args[]){
int[] nums={12,8,11,6,4,2,15,3,7,5};
for(int i=0;i<nums.length-1;i++){
int temp=nums[i];
int flag=i;
for(int j=i+1;j<nums.length;j++){
// nums[j] < temp 从小到大排序;nums[j] > temp 从大到小排序
if(temp>nums[j]){
temp=nums[j];
// 如果有小于当前最小值将此元素的下标赋值给flag,这是因为交换位置后我们需要知道nums[i]替换了哪个位置的元素
// j只是一个局部变量,我们要将其赋值给全局变量
flag=j;
}
}
if(flag!=i){
nums[flag]=nums[i];
nums[i]=temp;
}
}
for(int n=0;n<nums.length;n++){
System.out.print(nums[n]+" ");
}
}
}
输出结果:
2 3 4 5 6 7 8 11 12 15