- class Search_and_Sort_Func
- {
- public static void main(String args [])
- {
- }
- //线性查找,对不起,这里只接受int与double,超过这个数值范围的我们尚未作出解决
- public static int lineSearch(int key,int... numbers)
- {
- for(int i=0;i<numbers.length;i++)
- {
- if(key==numbers[i])
- return i;
- else
- return -1;
- }
- }
- public static int lineSearch(int key,double... numbers)
- {
- for(int i=0;i<numbers.length;i++)
- {
- if(key==numbers[i])
- return i;
- else
- return -1;
- }}
- //二分查找,
- public static int binarySearch(int key,int... numbers)
- {
- int low=0;
- int high=numbers.length-1;
- while(low<=high)
- {
- int mid=(low+high)/2;
- if(key<numbers[mid])
- high=mid-1;
- else if(key>numbers[mid])
- low=mid+1;
- else
- return mid;
- }
- return -low-1;
- }
- public static int binarySearch(int key,double... numbers)
- {
- int low=0;
- int high=numbers.length-1;
- while(low<=high)
- {
- int mid=(low+high)/2;
- if(key<numbers[mid])
- high=mid-1;
- else if(key>numbers[mid])
- low=mid+1;
- else
- return mid;
- }
- return -low-1;
- }
- //选择排序
- public static int[] selectionSort(int... numbers)
- {
- int tmp=0;
- for(int i=0;i<numbers.length-1;i++)
- {
- for(int j=1;j<numbers.length;j++)
- {
- if(numbers[i]>numbers[j])
- {
- tmp=numbers[i];
- numbers[i]=numbers[j];
- numbers[j]=tmp;
- }
- }
- }
- return numbers;
- }
- public static double[] selectionSort(double... numbers)
- {
- int tmp=0;
- for(int i=0;i<numbers.length-1;i++)
- {
- for(int j=1;j<numbers.length;j++)
- {
- if(numbers[i]>numbers[j])
- {
- tmp=numbers[i];
- numbers[i]=numbers[j];
- numbers[j]=tmp;
- }
- }
- }
- return numbers;
- }
- //插入排序
- public static int[] insertSort(int... numbers)
- {
- int currentValue=0;
- int tmpMark=0;
- for(int i=1;i<numbers.length;i++)
- {
- //currentValue=numbers[i];
- tmpMark=i;
- for(int k=i-1;k>=0;k--)
- {
- if(currentValue<numbers[k])
- {
- currentValue=numbers[k];
- numbers[k]=numbers[tmpMark];
- numbers[tmpMark--]=currentValue;
- }
- }
- }
- return numbers;
- }
- public static double[] insertSort(double... numbers)
- {
- double currentValue=0;
- int tmpMark=0;
- for(int i=1;i<numbers.length;i++)
- {
- //currentValue=numbers[i];
- tmpMark=i;
- for(int k=i-1;k>=0;k--)
- {
- if(currentValue<numbers[k])
- {
- currentValue=numbers[k];
- numbers[k]=numbers[tmpMark];
- numbers[tmpMark--]=currentValue;
- }
- }
- }
- return numbers;
- }
- }
- //该片段来自于http://www.codesnippet.cn/detail/290420149404.html
来源: http://www.codesnippet.cn/detail/290420149404.html