java基础 数组及数组排序方法


 1. 数组:所谓数组就是一个用来存储固定数目的单一数据类型的容器对象,数组中所有元素都有相同的数组名;

               一维数组的创建  如:

                        1> int[] arr = new int[10];

                         这是一个长度是10的int类型数组,该数组中没有元素,初始化数组的元素:                 

                         arr[0] = 1;

                        arr[2] = 2;

                        .......

                     2>int[] arr = {3,5,7,4,2}

                       这是一个长度为5的int类型数组,给数组中包含3,5,7,4,2元素

              二维数组的创建 如:

                  int[][] arr = new int[3][2];  或者

                  int[][] arr = {{1,2},{3,5},{7,8}};

2.数组的排序方法:

   

<span style="font-size:18px;"><strong>1>快速排序法:
</strong></span>
<span style="font-size:18px;"><strong> 
public class Text1 {
  
  public int partition(int[] a, int i, int j) {//分割排序
     int key = a[i];
     while(i < j) {
     while(i < j && a[j] >= key)//找出第一个比key小,并记下j值
             j--;
             a[i] = a[j];               //将a[j]移至a[i]处
             
    while(i < j && a[i] <= key)//找出第一个比key大,并记下i值
              i++;
             a[j] = a[i];               //将a[i]移至a[j]处
      }
             a[i] = key;//此时完成一趟排序
             return i;//此时i=j,记下i的值
   }
 
  public void sort(int[] a, int i, int j) {//递归调用分割
      if(i < j) {
       int n = partition(a,i,j);//排一次序列,并获取关键值的位置
       sort(a,i,n-1);//左递归
       sort(a,n+1,j);//右递归
      }
   }
   public static void main(String[] args) {
      int[] a = {15,9,20,6,4,27,36};
     
     Text2 t = new Text2();
        t.sort(a, 0, 6);
      for(int k : a) {//增强for循环遍历数组
       System.out.print(k + ",");
      }
   }
 
}
     

</strong></span>
<span style="font-size:18px;"><strong>2>选择排序法:</strong></span>
<span style="font-size:18px;"><strong>
 
public class Text2 {
 /*
  * 选择排序
  * 
 */
  public static void main(String[] args) {
   
   int[] a = {3,5,2,7,5,9,6,1};
   printArray(a);
  }
//定义方法
  public static void printArray(int[] arr){
   for(int i = 0; i < arr.length-1; i++){
    for(int j = i; j < arr.length; j++){
     if(arr[i] > arr[j]){
      //交换位置
      int temp = arr[i];
      arr[i] = arr[j];
      arr[j] = temp;    
     }
    }   
   }
   for(int i = 0; i < arr.length; i++){//数组遍历
    System.out.print(arr[i] + " ");
   }
  }
 }
</strong></span>
<span style="font-size:18px;"><strong> 
3>冒泡排序法:
</strong></span>
<span style="font-size:18px;"><strong> 
public class Text3 {
  //冒泡排序法
  public static void main(String[] args) {
   //定义一个数组
   int[] arr = {4, 1, 2, 6, 3, 8, 9, 10, 7, 5};
   
   for (int i = 0; i < arr.length; i++){
    //-i的目的,每一次比较的元素减少
    //-1的目的,避免交表越界
   for (int j = 0; j < arr.length - i - 1; j++){    
    if (arr[j] > arr[j + 1]){
     //换位置操作
     int temp = arr[j];     
     arr[j] = arr[j + 1];     
     arr[j + 1] = temp;    
     }   
    } 
   }
   //取出排序后数组中的值
   for (int i = 0; i < 10; i++){  
    System.out.print(arr[i] + " "); 
   }
  }
  
 }
</strong></span>
<span style="font-size:18px;"><strong> 
4>插入排序法
</strong></span>
<span style="font-size:18px;"><strong> 
public static int[] insertSort(int[] args){//插入排序算法
       for(int i=1;i<args.length;i++){
       for(int j=i;j>0;j--){
           if (args[j]<args[j-1]){
                int temp=args[j-1];
               args[j-1]=args[j];
                args[j]=temp;        
        }else break;
       }          
 
  }
          return args;
 
 }
</strong></span>
<span style="font-size:18px;"><strong> 
 数组的折半查找
</strong></span>
<span style="font-size:18px;"><strong> 
class ArrayText
 {
  public static void main(String [] args)
  {
    int[] arr = {1,3,5,6,8,9,12};
    int index = halfSearch(arr, 8);
    System.out.print("index:"+ index);
  }
  
  //折半的一种方式
  public static int halfSearch(int[] arr, int key)
  {
   int min = 0, max = arr.length-1, mid;
   while(min <= max)
   {
    mid = (min+max)/2;
    if(key > arr[mid])
     min = mid + 1;
    else if (key < arr[mid])
     max = mid - 1;
    else
     return mid;
   }
 
    return -1;
  
    }
  
 }
</strong></span>
<span style="font-size:18px;"><strong> 
数组的最大值及最小值求发:以最大值为例
</strong></span>
<span style="font-size:18px;"><strong> 
public class ArrayMax {
  
  public static void main(String[] args) {
   
   int[] arr = {4,2,7,9,23};
    int max = getMax(arr);
   System.out.println(max);
  }
   //获取最大值方法
 public static int getMax(int[] arr){
   
   int max = arr[0];
   for(int i = 0; i < arr.length; i++){
    if(arr[i] > max){
     
     max = arr[i];
    }  
   }
   return max;
  }
 }
</strong></span>

自己学习的总结,希望多初学者有所帮助

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值