(1)冒泡:
public class Sort {
public static void swap(int[] arr,int i,int j){
int temp = arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
public static int[] sort(int[] ls){
for(int i=0;i<ls.length;i++)
for (int j = 0; j < ls.length-i-1; j++)
if(ls[j]>ls[j+1])
swap(ls,j,j+1);
return ls;
}
public static void main(String[] args){
int[] ls = {9,20,1,12,32,10,5,8};
int[] a = {1,2,3,6,10,18,25,38};
int[] arr = sort(ls);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
System.out.println(sqSearch(ls,5));
System.out.println(sqSearch(a,25));
}
}
你也可以试试手写可以一次通过吗,我第一次就在第二个循环这里少减了1
for (int j = 0; j < ls.length-i-1; j++)
(2)查找
无序
public static int search(int array[],int key){
int i;
for(i=0;i<array.length&&key!=array[i];i++);
return(i<array.length?i:-1);
}
有序折半
public static int sqSearch(int array[],int key)
{
int low,high,mid;
low = 0;
high = array.length - 1;
while(low<=high)
{
mid = (high+low)/2;
if(array[mid] == key)
return(mid);
if(key > array[mid])
low = mid + 1;
else
high = mid - 1;
}
return(-1);
}