第一个:冒泡排序算法

原理:相邻的两个值进行比较,如果前面的比后面的大就交换位置

eg:假设有5个元素的一个array

  • 第一次:会比较4次,将最大的值放在最右边
  • 第二次:会比较3次,又排出剩余4个元素的最大值
  • 依次向下,知道最后一个,这样数组就算是排完了
package day16_nullnull;

import java.util.Arrays;

//冒泡排序算法的例子

public class null01_BubbleSort {

    public static void main(String[] args) {
int[] arr = {55,22,11,33,77,66};
//总共是要需要通过length-1次达到排序效果
for(int i=0;i<arr.length;i++){
//第一次0-1 1-2 2-3 3-4 4-5
//第二次0-1 1-2 2-3 3-4
//依次向下
for(int j=0;j<arr.length-i-1;j++){
System.out.println(j+"-"+(j+1));
if(arr[j]>arr[j+1]){ arr[j] = arr[j]^arr[j+1];
arr[j+1] = arr[j]^arr[j+1];
arr[j] = arr[j]^arr[j+1]; }
}
System.out.println("************");
}
System.out.println(Arrays.toString(arr));
} }

第二个:数组高级选择排序

原理:和上面的冒泡排序几乎是刚好相反,它会将小的向左边放,直到全部排序结束

package day16_nullnull;

import java.util.Arrays;

//数组高级选择排序

public class null02ArrayAdvancedSelectionSorting {

    public static void main(String[] args) {
int[] arr = {99,55,33,44,77,66,11};
//同上一个,也是需要经过length-1次排序
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
System.out.println(Arrays.toString(arr));
} }

第三个:数组高级二分查找(折半查找)

  二分查找又称为折半查找(让我想到了初中的一些数学题),目的是查找元素的索引,优点是查找次数少了,速度会快一些,平均性能好。但是却有一个前提,就是等待查询的数组啊必须是有序的(他要折半找最小最大中间值)。

package day16_nullnull;

//二分查找的例子

public class null03_BinarySearch {

    public static void main(String[] args) {
int[] arr = {11,22,33,44,55,66,77,88};
int max = arr.length-1;//取出最大值的索引
int min = 0;//指定最小值的索引
int mid = (min + max) / 2; //求出中间值的索引
int find = 66; //指定想要找到的值
while(find!=arr[mid]){
if(find<arr[mid]){
max = mid-1;
}else{
min = mid + 1;
}
mid = (min+max) / 2;
if(min>max){
System.out.println("找不到");
System.exit(0);
}
}
System.out.println("index:"+mid); } }

最新文章

  1. JavaScript对象的chapterI
  2. [收藏]谷歌htm/css规范
  3. es let2
  4. 我心中的核心组件(可插拔的AOP)~第二回 缓存拦截器
  5. Capture
  6. SQL计算实际工作日(天)及两个时间(工作日)间隔(小时)!
  7. SQLite 入门教程(一)基本控制台(终端)命令
  8. TCMalloc小记
  9. My97DatePicker显示时间控件的使用方法
  10. CentOS上安装redis记录
  11. Java多线程之---用 CountDownLatch 说明 AQS 的实现原理
  12. Luogu4512 【模板】多项式除法(多项式求逆+NTT)
  13. element-dialog封装成子组件
  14. 新品成熟EMR源码电子病历系统软件NET网络版CS可用带数据库全文档
  15. Apple Watch应用开发之PM2.5查询
  16. Guava CompoundOrdering
  17. .NET : Func委托和Action委托
  18. 装饰模式 (Decoratory)
  19. yum 安装php7.1
  20. JavaScript的DOM_动态加载脚本和样式

热门文章

  1. 自定义View--滚动View
  2. gearman服务连接php java
  3. MSP430 G2553 Launchpad实现电容测量
  4. wp8.1 sqlite Error - Deployment optimization failed due to an assembly that&#39;s not valid.
  5. Index--复合索引的思考1
  6. Solr中的概念:分析器(analyzer)、字符过滤器(character filter)、分词器(Tokenizer)、词元过滤器(Token Filter)、 词干化(Stemming)
  7. C#——Socket
  8. C#获取手机验证码+榛子云平台
  9. 实验了一下LitSphere做车漆
  10. TestNG参数化之@DataProvider传参