java经典排序(冒泡,选择)

数组排序

冒牌排序

原理:
1.从尾部开始比较相邻的两个元素,如果尾部的元素比前面的大,就交换两个元素的位置。
2.往前对每个相邻的元素都做这样的比较、交换操作,这样到数组头部时,第 1 个元素会成为最大的元素。
3.重新从尾部开始第 1、2 步的操作,除了在这之前头部已经排好的元素。
4.继续对越来越少的数据进行比较、交换操作,直到没有可比较的数据为止,排序完成。

int[] arr= {4,22,12,3};
  for (int i = 0; i < arr.length; i++) {
   for (int j = 0; j < arr.length-1-i; j++) {
    if(arr[j]<arr[j+1]) {//这里大于,小于  控制的是排列的升序还是降序
     int a=arr[j];//这里a 相当于一个容器作为交换的桥梁
     arr[j]=arr[j+1];
     arr[j+1]=a;
    }
   }
  }
  //遍历排序后的数组
  for (int i = 0; i < arr.length; i++) {
   System.out.println(arr[i]);
  }

总结:这个算法让我想起了小时候在操场排队跑步,老师总是说:“高的站前面,低的站后面”。我们一开始并不一定会站到准确的位置上,接着老师又说:“你比前面的高,和前面的换换,还高,再和前面换换”,就这样找到了自己的位置。

选择排序

原理:
是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

int[] arr= {22,12,44,1};
  for (int i = 0; i < arr.length; i++) {
   int min=arr[i];//假设最小
   int index=i;//记录最小的下表
   for (int j = i; j < arr.length; j++) {
    if (arr[j]<min) {//找到最小的数
     min=arr[j];
     index=j;
    }
   }
   //交换位置,以此类推最小(大)的,会继续排序
   arr[index]=arr[i];
   arr[i]=min;
  }
  //排序后的遍历
  for (int i : arr) {
   System.out.println(i);
  }

总结:就像学校升旗站队从低到高,每一次排序把最低(高)的喊出来依次排序

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值