为了账号安全,请及时绑定邮箱和手机立即绑定

数组,排序

标签:
Android

一.数组的定义

   一组具有相同数据类型数据的数据结构

二.数组的声明

int [] a

int a[]

注意:在声明数组时,不能指定数组的大小

   比如:int a[5],非法

三.数组的初始化

1.静态初始化:

   int[] a={1,2,3};//默认定义数组大小为3

   int[] a=new int[]{1,2,3};

   int[] a=new int[5];//指定a数组的大小

2.动态初始化:

 ①依次给数据元素赋值

   a[0]=0;

   a[1]=1;

②使用for循环赋值

  for(int i=0;i<10;i++){

   a[i]=i;

     }

四.数组的类型定义

1.简单数据类型数组

    ①栈:数组名内存

   ②堆内存:数组元素值

2.引用数据类型数组

    ①栈内存:数组名

   ②堆内存:a.数组元素的地址

                     b.数组元素值(String类型值位于常量池)

五.数组元素的默认初始化

   1.简单数据类型

    数据类型的默认值,比如int,默认值是0;

2.引用数据类型

    数据类型的默认值为null,而非地址,比如Stringnull

六.数组下标

  1.数组下标默认是从0开始

2.数组元素表示:a[0],a[i],a[6*i]

3.数组取值范围:如果数组长度为n,0~n-1;

                超过此范围会出现数组越界异常

4.数组长度的属性length

七.总结数组特点

   1.数组中既可以放简单数据类型,也可以放引用数据类型

  2.数组变量是引用数据类型,不是简单数据类型

  3.数组的大小在创建时指定,之后不可以修改;而数组中的元素值可以修改

八.for-each增强for循环

   写法:for(数据类型  变量 :数组名或集合名){

    语句体...

}

  作用:遍历数组和集合中的数据元素

九.可变参数

   写法:方法名(类型名...  变量名){语句体...}

作用:接收不确定的参数个数,使用较灵活

一.冒泡排序

1.特点:给定一个数组,它是进行两两比较,将较大数放到最后,直至数组元素有序

2.代码:public static void bubbleSort(int[] a) {

               int n = a.length;

             //总共进行n-1轮的比较

             for (int i = 1; i < n; i++) {

                  for (int j = 1; j < n ; j++) {

                   if (a[j-1] > a[j]) {

                           //交换

                int temp = a[j-1];

               a[j-1] = a[j];

               a[j] = temp;}

             }

       }

}

二.选择排序:

1.特点:给定一个数组,先遍历出该数组的最小值,将其放到特定位置,然后再次遍历最小值,知道数组元素有序

2.代码:public static void selectionSort(int[] a) {

                 for(int i = 0; i < a.length -1; i++) {// 做第i趟排序

                         int k = i;

                   for(int j = k + 1; j < a.length; j++){// 选最小的记录

                           if(a[j] < a[k]){

                                  k = j; //记下目前找到的最小值所在的位置

                             }

                    }

                 if(i != k){ //交换a[i]和a[k]

                 int temp = a[i];

                 a[i] = a[k];

                 a[k] = temp;

            }

       }

}

三.插入排序

1.特点:给定一个数组,先取出数组中两个值进行比较,然后按升序(或降序)排列,再从数组中取出第三个元素,跟原数列进行比较,生成一个升序(或降序)数列,直至数据元素全部取出,最终生成一个有序数列

2.代码:

public static void insertSort(int[] a) {

     for (inti= 1; i< a.length; i++) {

         for (int j = i; j > 0; j--) {

          if (a[j] < a[j -1]) {

           int temp = a[j];

          a[j] = a[j -1];

          a[j -1] = temp;} 

        else {break;}

         }

       }

}

一.顺序查找

1.特点:给定一个数组和需要查找的数字,在数组中依次对各个数据元素进行比较,直至找到需要查找的数字

2.代码:public static int search(int[] a,int num) {

 for(int i = 0; i < a.length; i++) {

if(a[i] == num){return i;}

}

 return-1;

}

二.二分查找

1.特点:给定一个有序的数组和需要查找的数字,先根据首尾索引的一半,找到一个数字进行比较,如果需要查找的数字大于该数字,则在该数字的右半部分在进行二分查找;反之则在该数字的左半部分进行二分查找,直至找到该数字

2.代码:

public static intbinarySearch(int[] a, intnum) {

intlow = 0; // 起点

intupper = a.length-1;// 终点

while (low <= upper) {

intmid = (low + upper) / 2; // 中间点

if (a[mid] < num) { // 中间点的值小于要查找的值

low = mid + 1; // 更改查找的起点为中间点位置后一位

} else if (a[mid] > num) { // 中间点的值大于要查找的值

upper = mid -1; // 更改查找的终点为中间点位置前一位

} else { // 中间点的值等于要查找的值

return mid; // 返回该位置

}

}

return -1;

}

注意:-1表示该数组中没有此数字

原文链接:http://www.apkbus.com/blog-491882-60693.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消