数组复制》
int[] ary1 = {3, 4, 5};
1)使用for循环:
int[] ary2 = new int[ary1.length]; // {0, 0, 0} for(int i = 0; i < ary1.length; i++) { ary2[i] = ary1[i]; }
2)使用System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length):
// 该方法底层用C语言编写,所以执行效率比较高
int[] ary3 = new int[arr1.length]; System.arraycopy(ary1, 0, ary3, 0, ary1.length);
3)使用Arrays.copyOf():
int[] ary4 = Arrays.copyOf(ary1, ary1.length);
数组扩容》
int[] ary = {3, 4, 5}; ary = Arrays.copyOf(ary, ary.length + 1); // 向数组中追加一个元素 ary[ary.length - 1] = 6; // 插入元素到最后
数组排序》
1)选择排序
原理说明:
ary={8,2,3,7,1}
ary={1|8,3,7,2}
ary={1,2|8,7,3}
ary={1,2,3|8,7}
ary={1,2,3,7|8}
代码:
i= 0 ~ < ary.length - 1
j=i+1 ~ <ary.length
i 代表第一个数据的位置
j 代码后部每一个数据的位置
for(int i = 0; i < ary.length - 1; i++) { for(int j = i+1; j < ary.length; j++) { if(ary[i] > ary[j]) { int temp = ary[i]; ary[i] = ary[j]; ary[j] = temp; } } }
2)冒泡排序
原理说明:
ary={8,2,3,7,1}
ary={2,8,3,7,1}
ary={2,3,8,7,1}
ary={2,3,7,8,1}
ary={2,3,7,1|8}
ary={2,3,7,1|8}
ary={2,3,7,1|8}
ary={2,3,1|7,8}
ary={2,3,1|7,8}
ary={2,1|3,7,8}
ary={1,2,3,7,8}
代码:
i = 0~ < ary.length-1
j = 0~ < ary.length - i -1
i代表次数
j代表比较位置
for(int i = 0; i < ary.length - 1; i++) { for(int j = 0; j < ary.length - i - 1; j++) { if(ary[j] > ary[j+1]) { int temp = ary[j]; ary[j] = ary[j+1]; ary[j+1] = temp; } } }
3)插入排序
原理说明:
{8|2,3,7,1}
{2,8|3,7,1}
{2,3,8|7,1}
{2,3,8|8,1}
{2,3,7,8|8}
{2,3,7,7|8}
{2,3,3,7|8}
{2,2,3,7|8}
{1,2,3,7|8}
代码:
i= 1 ~ <ary.length, i++
temp = [i];
j= i-1 ~ >=0, j--
i 代表后组待插入元素 位置
temp 代表取出的待插入元素
j 代表前组每个元素的位置
for(i = 1; i < ary.length; i++) { temp = ary[i]; for(j = i - 1; j >= 0 && temp < ary[j]; j--) { ary[j+1] = ary[j]; } ary[j+1] = temp; }
4)Java API排序方法
Arrays.sort(ary); // Java API提供的排序方法,效率更高