数组排序,查找方法。(学习笔记)

import java.util.*;


public class ArrayDemo_2 {
public static void main(String[] args)
{
int[] arr = { 16,96,56,76 };
//使用sort方法
/* Arrays.sort(arr);
PrintArray(arr);//在实际开发中使用该方法

//选择排序测试
PrintArray(arr);
SortSelect(arr);
PrintArray(arr);
//冒泡排序测试
int[] arr1 = { 16,96,56,76 };
PrintArray(arr1);
BubbleSort(arr1);
PrintArray(arr1);
*/
//查找排序
/*int[] array = {2,8,6,3,9,4};
BubbleSort(array);
PrintArray(array);
int index = getIndex(array,8);
System.out.println("index="+index);
int index1 = halfSearch_1(array,6);
System.out.println("index1="+index1);
*/
//向数组中插入数据
int[] arr_2=new int[5];
arr_2[0]=0;
arr_2[1]=1;
arr_2[2]=2;
arr_2[3]=4;
InsertNum(arr_2,8);
PrintArray(arr_2);

}
//查找数组中的数
public static int getIndex(int[] arr,int key)
{
for(int x=0;x<arr.length;x++)
{
if(arr[x]==key)
return x;
}
return -1;
}
//向有序数组中插入一个数
public static void InsertNum(int[] arr,int key)
{
int min=0,max=arr.length-1,mid;
while(min<max)
{
mid=(max+min)>>1;
if(key>arr[mid])
min = mid + 1;
else if(key<arr[mid])
max = mid - 1;
else 
break;
}
for(int Index=arr.length-1;Index>min;Index--)
{
arr[Index]=arr[Index-1];
}
arr[min]=key;
}
//折半查找,先排序在查找
public static int halfSearch(int[] arr,int key)
{
int min,max,mid;
min=0;
max=arr.length-1;
mid=(max+min)/2;
while(arr[mid]!=key)
{
if(key>arr[mid])
min=mid+1;
else if (key<arr[mid])
max=mid-1;
if(min>max)
return -1;
mid = (max+min)/2;
}
return mid;
}
public static int halfSearch_1(int[] arr,int key)
{
int min=0,max=arr.length-1,mid;
while(min<=max)
{
mid=(max+min)>>1;
if(key>arr[mid])
min = mid + 1;
else if(key<arr[mid])
max = mid - 1;
else
return  mid;
}
return -1;
}
//选择排序,降序排列
/*选择排序
* 内循环结束一次,最值出现在头角标位置上

* */
public static void SortSelect(int[] arr)
{
for(int i=0;i<arr.length-1;i++)
{
for(int x=i+1;x<arr.length;x++)
{
if(arr[i]<arr[x])
{
arr[x]=arr[i]^arr[x];
arr[i]=arr[i]^arr[x];
arr[x]=arr[i]^arr[x];
}
}
}

}
//冒泡排序
/*第一圈:最值出现在最后位*/
public static void BubbleSort(int[] arr)
{
for(int i=0;i<arr.length-1;i++)
{
for(int x=0;x<arr.length-i-1;x++)
{
if(arr[x]>arr[x+1])
{
int temp = arr[x];
arr[x]=arr[x+1];
arr[x+1]=temp;
}
}
}
}


//打印输出数组元素
public static void PrintArray(int[] arr)
{
System.out.print("[");
for(int x=0;x<arr.length;x++)
{
if(x != arr.length-1)
System.out.print(arr[x]+", ");
else 
System.out.println(arr[x]+"]");
}
}



}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值