您的位置:首页 > 编程语言 > Java开发

简单Java冒泡排序 二分查找 快速排序

2015-05-26 11:37 429 查看
数据储存一般用数组或容器集合,下标第一位都是0,数组有一维数组和二维数组,集合有List,Set,Map:01 010 10 0x10

  与(&)、非(~)、或(|)、异或(^) << >>

  &:当两边操作数的位同时为1时,结果为1,否则为0。如1100&1010=1000

  | :当两边操作数的位有一边为1时,结果为1,否则为0。如1100|1010=1110

  ~:0变1,1变0

  ^:两边的位不同时,结果为1,否则为0.如1100^1010=0110

//冒泡排序法

public static void main(String[] args)  {
int num[]={5,4,3,2,1};
for(int i=0;i<num.length-1;i++)
{
for(int j=0;j<num.length-1;j++)
{
if(num[j]>num[j+1])
{
int k=num[j];
num[j]=num[j+1];
num[j+1]=k;
}
}
}
for(int i=0;i<num.length;i++)
{
System.out.println(num[i]);
}
System.out.println("二分查找法:"+BinarySearch(num,5));
}
//二分法需要数据已经排好顺序
private static int BinarySearch(int num[],int no) {
int start=0;
int end=num.length-1;
int middle;
while(start<=end){
middle=(start + end)/2;
if(num[middle]==no){
return middle;
}
if(num[middle]>no){
end=middle-1;
}
if(num[middle]<no){
start=middle+1;
}
}
return -1;
}


//快速排序法

public int getMiddle(int[] list, int low, int high) {
int tmp = list[low];    //数组的第一个作为中轴
while (low < high) {
while (low < high && list[high] >= tmp) {
high--;
}
list[low] = list[high];   //比中轴小的记录移到低端
while (low < high && list[low] <= tmp) {
low++;
}
list[high] = list[low];   //比中轴大的记录移到高端
}
list[low] = tmp;              //中轴记录到尾
return low;                   //返回中轴的位置
}
public void quickSort(int[] list, int low, int high) {
if (low < high) {
int middle = getMiddle(list, low, high);  //将list数组进行一分为二
quickSort(list, low, middle - 1);        //对低字表进行递归排序
quickSort(list, middle + 1, high);       //对高字表进行递归排序
}
}




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: