它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。
- // 冒泡排序
- public static void bubblesort(int [] arr)
- {
- for( int x=0; x<arr.length; x++) // for(int x=arr.length-1; x>0; x--)
- { // for( int y=0; y<x; y++)
- for( int y=0; y<arr.length-1-x; y++) //-x: 让每一次比较的元素减少;-1:避免下表越界
- {
- if(arr[y]>arr[y+1])
- {
- /*
- int temp=arr[y];
- arr[y]=arr[y+1];
- arr[y+1]=temp;
- */
- swap(arr,y,y+1);
- }
- }
- }
- }
复制代码
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。
- // 折半查找可以提高查找效率,但必须要保证该数组是有序的数组
- public static int halfsearch( int [] arr, int key)
- {
- int min, max, mid;
- min=0;
- max=arr.length-1;
- mid=(min+max)/2;
- while(arr[mid]!=key)
- {
- if(arr[mid]>key)
- max=mid-1;
- else if(arr[mid]<key)
- min=mid+1;
- if(min>max)
- return -1;
- mid=(min+max)/2;
- }
- return mid;
- }
复制代码 |