Java数组综合新年积分_第二十四节:Java语言基础-讲解数组的综合应用

6d750ad1e323df871c3a1e213d16d455.png

数组的综合应用

3b62ec6b616b07591c7911f7909e7378.png

// 打印数组

public static void printArray(int[] arr)

{

for(int x=0;x

{

if(x!=arr.length-1){

System.out.print(arr[x]+",");

}else{

System.out.print(arr[x]);

}

}

}

数组转字符串

// 数组转换成为字符串

// 结果返还为字符串,参数为数组

public static String toString (int[] arr){

// 定义字符串变量

String temp = "[";

for(int x = 0; x

// 判断是否为最后一位元素

if(x != arr.length - 1){

temp = temp + arr[x] + ",";

}else{

temp = temp + arr[x] + "]";

}

}

}

public static String getWeek(int num){

String[] weeks = { "1", "2", "3", "4", "5", "6", "7" };

if(num>7 || num<1){

return num + "没有对应的星期";

}

return weeks[num];

}

选择排序

选择排序是第一个人和后续排序的人进行比较,若第一个人大于第二个人,就进行交换,那么这时第一人就是最小的,然后这时的第一个人和第三个人进行比较,若这时的第一个人大于第三个人,就进行交换位置,这时第一个人又换人了,也变得更小了,就这样,把剩下的人以这种方法进行比较,直到最后,第一轮结束,在第一位的就是最小的值。

这种就是排序算法,比如有6个人,第一轮要进行5次比较。小的值往前跑嘛。

//第一轮

for(int index=1;index

{

if(arr[0]>arr[index])

{

int temp = arr[0];

arr[0] = arr[index];

arr[index] = temp;

}

}

print(arr);

//第二轮

for(int index=2;index

{

if(arr[1]>arr[index])

{

int temp = arr[1];

arr[1] = arr[index];

arr[index] = temp;

}

}

print(arr);

//第三轮

for(int index=3;index

{

if(arr[2]>arr[index])

{

int temp = arr[2];

arr[2] = arr[index];

arr[index] = temp;

}

}

print(arr);

//第四轮

for(int index=4;index

{

if(arr[3]>arr[index])

{

int temp = arr[3];

arr[3] = arr[index];

arr[index] = temp;

}

}

print(arr);

//第五轮

for(int index=5;index

{

if(arr[4]>arr[index])

{

int temp = arr[4];

arr[3] = arr[index];

arr[index] = temp;

}

}

print(arr);

//第六轮没有,我们arr.length=6举例

//int index = 6;index

优化:

public static void selectionSort(int[] arr)

{

for(int count=1;count

{

for(int index=count;index

{

if(arr[count-1]>arr[index])

{

int temp = arr[count-1];

arr[count-1] = arr[index];

arr[index] = temp;

}

}

}

for(int x = 0;x

{

for(int y=x+1;y

if(arr[x]>arr[y]){

int temp = arr[x];

arr[x] = arr[y];

arr[y] = temp;

}

}

}

冒泡排序

为什么这个排序要叫冒泡呢?为什么不叫其他名词呢?

其实这个取名是根据排序算法的基本思路命名的,见名知意,冒泡排序,就是想泡泡在水里一样,在水里大的泡泡先浮出水面,就是大的先排出来,最小的最慢排出。

冒泡排序,是对排序的各个元素从头到尾依次进行相邻的大小比较,比如你是队长,在你的面前有一排人,你要将其进行排序,依次按照从小到大排序。

怎么理解最大的值被排除,你是队长,你对面前的一群人看不惯,进行排序,从左到右开始,第一个和第二个进行比较,大的那个就被挑出来,与第三个进行比较,接下来就是依次按照这个方法比较,就能把那个最大的值,最高的给挑出来不是,这就是第一轮的比较。

接下来,最大的就不用跟他比较了,上面所述,在排序时,你面前的人,是不能乱动的,一旦比较哪个大,两者就换位,如果第一比第二个小,就是第二个大时,两者不用换位,第二个就与第三个进行比较。

依照这个方法,两两比较,大的都被排到了最后,那么一旦排完,是不是都依照从小到大,(从低到高)的顺序在你面前排好了。

代码示例

我们用索引下标来解释

//第一轮

for(int index=0;index < arr.length-1; index++){

//相邻两个比较

if(arr[index] > arr[index+1]){

int temp = arr[index];

arr[index] = arr[index+1];

arr[index+1] = temp;

}

}

print(arr);

for(int index=0;index < arr.length-2;index++){

//这里arr.length-2,为什么比上一次多减了1呢?

//因为第一轮,把最大的排出来了,就不用比较了,少了一个人

if(arr[index] > arr[index+1]){

int temp = arr[index];

arr[index] = arr[index+1];

arr[index+1] = temp;

}

}

print(arr);

for(int index=0;index < arr.length-3;index++){

if(arr[index]>arr[index+1]){

int temp = arr[index];

arr[index] = arr[index+1];

arr[index+1] = temp;

}

}

print(arr);

优化:

for(int num=1;num

for(int index=0;index

if(arr[index]>arr[index+1]){

int temp = arr[index];

arr[index] = arr[index+1];

arr[index+1] = temp;

}

}

}

for(int x=0;x

for(int y=0;y

if(arr[y]>arr[y+1]){

int temp = arr[y];

arr[y] = arrp[y+1];

arr[y+1] = temp;

}

}

}

二分查找,折半查找

什么是二分查找,折半查找呢?就是我说一个数,你来猜,你答一个数,我说大了,或小了,直到找到为止。

public static int searchKey(int[] arr, int key){

for(int x=0;x

if(arr[x] == key){

rerurn x;

}

return -1;

}

}

二分

public static int binarySearch(int[] arr, int key){

int max,min,mid;

min = 0;

max = arr.length - 1;

mid = (max+min)>>1;

while(arr[mid] != key){

if(key>arr[mid]){

min = mid + 1;

}else if(key

max = mid - 1;

mid = (max+min)>>1;

}

return mid;

}

}

public static int binarySearch(int[] arr, int key){

int max, min , mid;

min = 0;

max = arr.length - 1;

while(min <= max){

mid = (min+max)>>1;

if(key>arr[mid]){

min = mid + 1;

}else if(key < arr[mid])

max = mid - 1;

} else {

return mid;

}

return -1;

}

二维数组

格式:

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

int[][] arr = { {3,5,6}, {33,44,66}, {23,21,6} };

for(int x=0; x

for(int y=0; y

sum += arr[x][y];

}

}

public static void revese(int[] arr){

for(int start=0, end = arr.length-1; start

swap(arr,start,end);

}

}

public static void swap(int[] arr, int a, int b){

int temp=arr[a];

arr[a] = arr[b];

arr[b] = temp;

}

结语

本文主要讲解 Java语言基础-讲解数组的综合应用

下面我将继续对Java、 Android中的其他知识 深入讲解 ,有兴趣可以继续关注

小礼物走一走 or 点赞

3190228e3d6117a7acc81aefcc3bab23.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值