java面试常用的排序与查找
2017-07-25 11:52
246 查看
//写一个方法,然后对一个int数组进行选择排序
public static void chooseSort(int[] arr){
for(int i=0;i<arr.length-1;i++){//控制的是选定的位置
for(int j=i+1;j<arr.length;j++){//内循环控制的是每一次比较过程
if(arr[i]>arr[j]){//当前选定位置值与后面所有值比较
/*int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;*/
changeTemp(arr,i,j);
}
}
bianLiArray(arr);
}
}
public static void bianLiArray(int[] arr){
for(int a:arr){
System.out.print(a+" ");
}
System.out.println();
}
//冒泡排序
public static void bubbleArray(int[] arr){
for(int i=1;i<arr.length;i++){//控制的是第几次比较
for(int j=0;j<arr.length-i;j++){//来控制每次比较过程
if(arr[j]>arr[j+1]){
/*int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;*/
changeTemp(arr,j,j+1);
}
}
bianLiArray(arr);
}
}
/*折半查找算法
前提---查找的数组一定是一个有序的数组
目的---查找一个数组中是否含有某一个值
优点:减少比较的次数*/
思路://定义三个值
/*
<!-- 数组中位值在小智min=0;
数组中最大值max=arr.length-1;
在定义一个中间值mid=0;
循环条件
min<max
while<min<=max){
mid=(min+max)/2;
if(min>key){
max=mid-1;
else if(arr[min]<key)
min=mid+1;
return max;
-->*/
public static int halfserach(int[] arr,int key){
int min=0;//位置最小值
int max=arr.length-1;//位置的最大值
int mid=0;
while(min<=max){
mid=(min+max)/2;
if(arr[mid]>key)
max=mid-1;
else if(arr[mid]<key){
min=mid+1;
}else{
return mid;
}
}
//return -1;
return mid;
}
public static void chooseSort(int[] arr){
for(int i=0;i<arr.length-1;i++){//控制的是选定的位置
for(int j=i+1;j<arr.length;j++){//内循环控制的是每一次比较过程
if(arr[i]>arr[j]){//当前选定位置值与后面所有值比较
/*int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;*/
changeTemp(arr,i,j);
}
}
bianLiArray(arr);
}
}
public static void bianLiArray(int[] arr){
for(int a:arr){
System.out.print(a+" ");
}
System.out.println();
}
//冒泡排序
public static void bubbleArray(int[] arr){
for(int i=1;i<arr.length;i++){//控制的是第几次比较
for(int j=0;j<arr.length-i;j++){//来控制每次比较过程
if(arr[j]>arr[j+1]){
/*int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;*/
changeTemp(arr,j,j+1);
}
}
bianLiArray(arr);
}
}
/*折半查找算法
前提---查找的数组一定是一个有序的数组
目的---查找一个数组中是否含有某一个值
优点:减少比较的次数*/
思路://定义三个值
/*
<!-- 数组中位值在小智min=0;
数组中最大值max=arr.length-1;
在定义一个中间值mid=0;
循环条件
min<max
while<min<=max){
mid=(min+max)/2;
if(min>key){
max=mid-1;
else if(arr[min]<key)
min=mid+1;
return max;
-->*/
public static int halfserach(int[] arr,int key){
int min=0;//位置最小值
int max=arr.length-1;//位置的最大值
int mid=0;
while(min<=max){
mid=(min+max)/2;
if(arr[mid]>key)
max=mid-1;
else if(arr[mid]<key){
min=mid+1;
}else{
return mid;
}
}
//return -1;
return mid;
}
相关文章推荐
- Java类库中的一些常用的查找排序
- java 集合的常用操作(排序、查找、打乱顺序)
- java基础--常用数组的一些操作方法-查找-最值-排序
- java 集合的常用操作(排序、查找、打乱顺序)
- Java基础---API常用类2(Arrays类的查找排序)
- java语言实现常用算法(排序和查找)
- 【java 面试100】14.输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字
- java 集合的常用操作(排序、查找、打乱顺序)
- 面试前的准备(java专业 ~学习算法排序以及查找)
- java基础学习之排序,查找
- java例程练习(引用类型数据的排序和查找)[外篇]
- java面试常用算法大全
- Java常用集合排序
- Java使用二分法进行查找和排序的示例
- 【Java版本】二分查找&数字在排序数组中出现的次数
- Java map详解 - 用法、遍历、排序、常用API等
- java中常用的排序方法
- Java基础学习应用_数组常用方法与排序(一)
- 程序员面试金典(排序与查找):元素查找(java解法)
- java常用四种排序源代码