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