您的位置:首页 > 其它

数组基本操作

2013-05-08 14:51 218 查看
开始学习JAVA,为了熟悉java的语言环境,于是采用很笨拙的方式,编写数组的基本排序算法。

package javabase;

public class Arraybase {
public static void main(String[] args){
int[] array = {11,13,2,5,4,6,8,7,9,11,20,18,19};
int[] array_1 = {1,2,3,4,5,6,7,8,9,10};
printArray(array);
sumArray(array);
getMax(array);
getMin(array);
selectSort(array);
bubbleSort(array);
insectSort(array);
shellSort(array);
quickSort(array);
binarySearch(array_1,10);
}

/*
* 定义数组输出功能
*/
public static void printArray(int[] arr){
System.out.print("[");
for(int i=0;i<arr.length;i++){
if(i==arr.length-1){
System.out.println(arr[i]+"]");
}
else System.out.print(arr[i]+", ");
}
}
/*
* 定义数组求和功能
*
*/
public static void sumArray(int[] arr){
int sum=0;
for(int i=0;i<arr.length;i++){
sum+=arr[i];
}
System.out.println(sum);
}
/*
* 获取最值,包括最大值和最小值
*/
public static void getMax(int[] arr){
int max = arr[0];
for(int i=1;i<arr.length;i++){
if(max<arr[i]) max=arr[i];
}
System.out.println(max);
}
public static void getMin(int[] arr){
int min = arr[0];
for(int i=1;i<arr.length;i++){
if(min>arr[i]) min=arr[i];
}
System.out.println(min);
}
/*
* 交换数组元素
*/
public static void swapArray(int[] arr, int firstIndex, int lastIndex){
int temp=arr[firstIndex];
arr[firstIndex]=arr[lastIndex];
arr[lastIndex]=temp;
}
/*
* 对数组进行选择排序
*/
static void selectSort(int[] arr){
for(int i=0;i<arr.length-1;i++){
int key=i;
for(int j=i+1;j<arr.length;j++){
if(arr[key]>arr[j]){
key=j;
}
}
if(key!=i){
swapArray(arr,i,key);
}
}
printArray(arr);
}
/*
* 对数组进行冒泡排序
*/
static void bubbleSort(int[] arr){
for(int i=0;i<arr.length-1;i++){
for(int j=0; j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
printArray(arr);

}
/*
* 对数组进行插入排序
*/
static void insectSort(int[] arr){
for(int i=1;i<arr.length;i++){
int temp=arr[i];
int j=i-1;
while(j>=0&&temp<arr[j]){
arr[j+1]=arr[j];
j--;
}
arr[j+1]=temp;
}
printArray(arr);
}
/*
* 对数组进行shell排序
*/
static void shellSort(int[] arr){
for(int h=arr.length/2;h>0;h/=2){
for(int i=h;i<arr.length;i++){
int j=i%h;
while(arr[j]<arr[i]) j+=h;
int temp=arr[i];
for(int k=i-h;k>=j;k-=h){
arr[k+h]=arr[k];
}
arr[j]=temp;
}
}
printArray(arr);
}
/*
* 对数组进行快速排序
*/
static void quickSort(int[] arr){
int low=0, high=arr.length-1;
int key=arr[low];
while(low!=high){
while(arr[high]>key&&high>low) high--;
arr[low]=arr[high];
while(arr[low]<key&&low<high) low++;
arr[high]=arr[low];
}
arr[high]=key;
printArray(arr);
}
/*
* 对数组二分查找排序
*/
static int binarySearch(int[] arr,int num){
int low=0,high=arr.length-1;
while(low<=high){
int middle=(low+high)>>1;
if(num==arr[middle]){
System.out.print(middle);
return middle;}
else if(num>arr[middle]){
low=middle+1;
}else high=middle-1;
}
return -1;
}

}


个人觉得帮助还是蛮大的,也请论坛的牛人推荐下学习java的好的方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: