JavaSE基础数组排序
来源:互联网 发布:淘宝设计美工招聘 编辑:程序博客网 时间:2024/06/08 09:04
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;}//如果没有符合的元素,索引返回-1if(min>max){return -1;}mid = (max+min)/2; //重新计算mid}return mid; //如果arr[mid]=value,直接返回mid}}
阅读全文
0 0
- javaSE基础-数组排序
- JavaSE基础数组排序
- JavaSE 数组排序
- JavaSE 学习参考:数组排序
- JavaSE----基础语法(数组)
- JavaSe基础(4)---数组
- JavaSe基础XX02——数组
- JavaSe基础XX03——数组
- JavaSe基础XX04——多维数组
- 黑马程序员——javase基础--数组
- JavaSE编程基础 第四章 数组
- JavaSE基础笔记之直接排序
- JavaSE基础笔记之冒泡排序
- JavaSE基础之冒泡排序优化问题
- JavaSE基础第三部分:Java数组和算法之数组
- javaSE 数组
- javase-数组
- java基础数组排序
- Java Web笔记(四)
- Python 中的 if __name__ == '__main__' 该如何理解
- 多个页面共用一个js文件,但是有些页面没有某个元素,导致报错
- mac brew和brew cask的区别
- centos6.8下安装搭建apache环境是出现 make: *** No targets specified and no makefile found. Stop.的解决方案
- JavaSE基础数组排序
- CSS中奇数选择器与偶数选择器,一句代码怎么实现?
- #include <string.h> 、<cstring>、<string> 的区别
- Java JDK动态代理实现自己的事务管理器
- pthread_cond_wait执行失败
- Linux下后台执行的程序出现stopped的情况
- 初学Qt:链表迭代器
- 删除无序链表中值重复出现的节点
- 网狐荣耀版棋牌游戏输赢控制设置