JavaSE基础数组排序
2017-11-08 14:40
134 查看
1.选择排序
package zst.org.arrays; /**选择排序: * 从零索引开始,用它对应的元素依次和后面的索引对应的元素进行比较,小的往前放第一次比较完毕,最小值出现在最小索引处 * 依次这样比较就可以得到一个排好序的数组。 * @author:zsyht * @date:2017-11-6上午10:36:17 */ public class Selectsort { public static void main(String[] args) { int [] arr ={94,82,65,39,18}; System.out.print("排序前的数组:"); printArray(arr); /* //第一次比较 int x = 0; for(int y=x+1;y<arr.length;y++){ if(arr[y]<arr[x]){ //后面的索引对应的元素小于前面索引对应的元素 int temp=arr[x]; arr[x]=arr[y]; arr[y]=temp; } } System.out.print("第一次比较结果:"); printArray(arr); //第二次比较 x =1; for(int y=x+1;y<arr.length;y++){ if(arr[y]<arr[x]){ int temp=arr[x]; arr[x]=arr[y]; arr[y]=temp; } } System.out.print("第二次比较结果:"); printArray(arr); //第三次比较 x=2; for(int y=x+1;y<arr.length;y++){ if(arr[y]<arr[x]){ int temp=arr[x]; arr[x]=arr[y]; arr[y]=temp; } } System.out.print("第三次比较结果:"); printArray(arr); x = 3; for(int y=x+1;y<arr.length;y++){ if(arr[y]<arr[x]){ //后面的索引对应的元素小于前面索引对应的元素 int temp=arr[x]; arr[x]=arr[y]; arr[y]=temp; } } System.out.print("第四次比较结果:"); printArray(arr);*/ //重复度高 代码臃肿,循环改进 for(int x =0;x<arr.length-1;x++){ for(int y =x+1;y<arr.length;y++){ if(arr[x]<arr[y]){ int temp=arr[x]; arr[x]=arr[y]; arr[y]=temp; } } } System.out.print("排序后的数组:"); printArray(arr); } public static void printArray(int []arr){ System.out.print("["); for(int x=0;x<arr.length;x++){ if(x==arr.length-1){ System.out.print(arr[x]+"]"); }else { System.out.print(arr[x]+","); } } System.out.println(); } }
2.二分查找
package zst.org.arrays; /**二分查找 * 必须是一个有序的数组 * @author:zsyht * @date:2017-11-6下午9:44:46 */ public class binarySearch { public static void main(String[] args) { int [] arr = {11,22,33,44,55,66,77}; int index =getIndex(arr,33); System.out.println("要查找的元素对应的索引为:"+index); int index2 =getIndex(arr,456); System.out.println("要查找元素对应的索引为:"+index2); } //二分查找方法 public static int getIndex(int[]arr,int value){ int min = 0; int max = arr.length-1; int mid = (min+max)/2; //不知道循环次数用whlie循环 while(arr[mid]!=value){ //arr[mid]不等于value分两种情况 if(arr[mid]>value){ max=mid-1; }else if(arr[mid]<value){ min=mid+1; } //如果没有符合的元素,索引返回-1 if(min>max){ return -1; } mid = (max+min)/2; //重新计算mid } return mid; //如果arr[mid]=value,直接返回mid } }
相关文章推荐
- 黑马程序员_JavaSE基础05 之 数组的操作 求最值 排序 折半查找
- 黑马程序员_JavaSE基础06 之 数组的操作 求最值 排序 折半查找
- JavaSE基础 - 数组排序之选择排序
- javaSE基础-数组排序
- JavaSE基础 - 数组排序之冒泡排序
- C#基础之数组排序,对象大小比较
- JAVA基础——初识JAVA(六)(数组,数组遍历,数组排序,数组常用方法、二维数组)
- linux基础(十八)数组和排序
- NSArray基础-数组排序
- NSArray基础数组的排序
- JAVA基础day04 数组学习 排序和查找基本算法
- java基础知识之五:(list循环、排序、数组与list转化)
- Java基础05-数组排序与查找
- LeetCode基础-查找-排序数组二分查找
- C语言基础知识之(六):数组-----数组类型、定义数组、读取数组、排序数组、字符串数组函数
- Java基础总结 - 数组排序之归并排序
- java 基础知识-数组的7种算法(排序、求和、最值、遍历...)
- JavaSE 基础 第18节 数组的创建以及初始化
- JavaSE 学习参考:数组排序
- 蓝桥杯基础练习:数列排序(数组、排序)