排序与查找

(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;

}

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值