很多同学写这几个常用排序的时候有时候会卡壳,现整理了下,供大家参考
冒泡排序:
public static void bubbleSort(int[] arr)
{
int tmp;
for(int x=0;x<arr.length-1;x++)
{
//逐渐将最大值确定
for(int y=0;y<arr.length-x-1;y++)
{
//将数组升序排序,if语句里面改为小于号(<)的时候是降序排列
if(arr[y]>arr[y+1])
{
tmp=arr[y];
arr[y]=arr[y+1];
arr[y+1]=tmp;
}
}
}
}
选择排序:
public static void seclectSort(int[] arr)
{
int tmp;
for(int x=0;x<arr.length;x++)
{
for(int y=x+1;y<arr.length;y++)
{
//将数组升序排序,if语句里面改为小于号(<)的时候是降序排列
if(arr[x]>arr[y])
{
tmp=arr[x];
arr[x]=arr[y];
arr[y]=tmp;
}
}
}
}
折半查找(折半查找的数组需要是先进行排序的,并且升序和降序是有要求的,这个需要注意):
public static boolean zheBanFind(int[] arr,int key)
{
int start=0;
int end=arr.length-1;
boolean flag=false;
for(int x=0;x<arr.length;x++)
{
if(arr[(start+end)/2]!=key)
{
//此代码是针对升序排列的数组进行折半查找的,需要对降序排列
//数组进行折半查找的同学可以做适当改变
if(arr[(start+end)/2]<key)
{
start=(start+end)/2+1;
}
else
{
end=(start+end)/2-1;
}
}
else
{
flag=true;
}
}
return flag;
}
有疑问的同学可以在后面留言共同探讨。