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
来源: http://www.bubuko.com/infodetail-2527778.html