排序与查找

来源:互联网 发布:机房网络搭建 编辑:程序博客网 时间:2024/06/05 07:50

(1)排序

A:冒泡排序

相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处。同理,其他的元素就可以排好。

 

publicstatic void bubbleSort(int[] arr) {

for(intx=0; x<arr.length-1; x++) {

for(inty=0; y<arr.length-1-x; y++) {

if(arr[y]> arr[y+1]) {

inttemp = arr[y];

arr[y]= arr[y+1];

arr[y+1]= temp;

}

}

}

}

 

B:选择排序

0索引的元素,和索引1以后的元素都进行比较,第一次完毕,最小值出现在了0索引。同理,其他的元素就可以排好。

 

publicstatic void selectSort(int[] arr) {

for(intx=0; x<arr.length-1; x++) {

for(inty=x+1; y<arr.length; y++) {

if(arr[y]< arr[x]) {

inttemp = arr[x];

arr[x]= arr[y];

arr[y]= temp;

}

}

}

}

(2)查找

A:基本查找

针对数组无序的情况

 

publicstatic int getIndex(int[] arr,int value) {

intindex = -1; 

for(intx=0; x<arr.length; x++) {

if(arr[x]== value) {

index= x;

break;

}

} 

returnindex;

}

B:二分查找(折半查找)

针对数组有序的情况(千万不要先排序,在查找)

 

publicstatic int binarySearch(int[] arr,int value) {

intmin = 0;

intmax = arr.length-1;

intmid = (min+max)/2;

while(arr[mid]!= value) {

if(arr[mid]> value) {

max= mid - 1;

}elseif(arr[mid] < value) {

min= mid + 1;

} 

if(min> max) {

return-1;

} 

mid= (min+max)/2;

} 

returnmid;

}

原创粉丝点击