Java数组
数组的声明和创建
格式:变量类型 变量名称 = new 变量值
步骤:1.声明一个数组。2.创建一个数组。3.给数组元素赋值
数组的三种初始化状态
1.静态初始化
2.动态初始化
3.数组默认初始化
数组的使用
1.利用循环遍历一次
2.each循环(无下标)
3.数组作方法入参
4.数组作返回值
Arrays类
Arrays.tostring 数组输入
arrays.sort 数组排序
arrays.fill 数组填充
冒泡排序
思路:比较数组中两个相邻的元素,如果第一个数比第二个数,没一次比较,产生一个最大数(或最小数),下一轮就比较次数少一次
八大排序
1.插入排序-直接插入排序
将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。 时间复杂度:O(n^2)
2.插入排序-希尔排序
先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。
3.选择排序-简单选择排序
在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。
4.选择排序-堆排序
排序是一种树形选择排序,是对直接选择排序的有效改进。
5.交换排序-冒泡排序
在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
6.交换排序-快速排序
1)选择一个基准元素,通常选择第一个元素或者最后一个元素,
2)通过一趟排序讲待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值小。另一部分记录的 元素值比基准值大。
3)此时基准元素在其排好序后的正确位置
4)然后分别对这两部分记录用同样的方法继续进行排序,直到整个序列有序。
7.归并排序
归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。
8.桶排序/基数排序
是将阵列分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递回方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的阵列内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是 比较排序,他不受到 O(n log n) 下限的影响。
稀疏数组
当一个数组中大部分元素是0,或者是同一值的数组时,可以用稀疏数组来保存。