第六天 数组(2)

作者在 2017-07-11 23:16:14 发布以下内容

1.数组的排序:Arrays.sort(); 用法

    import java.util.Arrays;

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

    Arrays.sort(a);

    for(int i=0;i<a.length;i++){System.out.println(a[i]);}//结果:以 升序输出(无论数字int还是字母String)

example:

package lianxi;//1.把一组学生成绩按升序排列 2.把一堆字母按降序输出
import java.util.Scanner;
import java.util.Arrays;
public class array_1 {


public static void main(String[] args) {
/*
Scanner s = new Scanner(System.in);
System.out.println("请输入学生个数:");
int n = s.nextInt();
int[] a = new int[n];
for(int i=0;i<n;i++){
System.out.println("请输入第"+(i+1)+"个学生的成绩");
a[i] = s.nextInt();
}//用到了 Arrays.sort(a); 升序输出数组
Arrays.sort(a);
for(int i=0 ; i<a.length;i++){
System.out.println(a[i]);
}



*/ //这是1
Scanner s  = new Scanner(System.in);
System.out.println("请输入这组字母的个数:");
int m = s.nextInt();
String[] str = new String[m];
for(int i=0;i<str.length;i++){
System.out.println("请输入第"+(i+1)+"个字母:");
str[i] = s.next();
}
Arrays.sort(str);
for(int i=str.length-1;i>=0;i--){
System.out.println(str[i]);
}
}


}

2. 数组的复制 a[3]={1,3,4};用for循环可复制到 b[];

3.数组的查找:

String name = "岳达";

String[] arr = {"朝凼","里斯","岳达"};

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

    if(name.equals(arr[i])){

    System.out.println("存在!");

    break;    

    }    

}

4.数组的插入: 在a[3] = {2,4,5};末尾插入1,再排序(不要用Arrays.sort(a);)//插入是为了引出冒泡序

int a[3] = {2,4,5};

a(a.length-1) = 1;

for(int i=a.length-1;i>0;i--{

    if(a[i]<a[i-1]){int t=a[i];a[i]=a[i-1];a[i-1]=t;}

}

5.冒泡排序和选择排序 有关键 

package lianxi;//定义一组数字的长度并输入,然后分别用冒泡排序和选择排序输出
import java.util.Scanner;
public class adsadd {


public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("请输入数组的长度:");
int m = s.nextInt();
int[] arr = new int[m];
for(int i=0;i<arr.length;i++){
System.out.println("请输入第"+(i+1)+"个数的大小:");
arr[i] = s.nextInt();
}//冒泡排序
//关键在于:在不考虑效率问题时,从实例知道i和j循环次数相同 而j+1循环次数为1~arr.length-1(这就是最后一个数!)即可得到j的取值范围 i就知道了
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1;j++){//通过个例 比如 arr.length = 7 第一回比6次,之后是5次,4,3...所以这里改为 j<arr.length-1-i;可提高效率
if(arr[j]>arr[j+1]){//大于号 交换  换把大的沉底 既得到 升序 反之 降序
int t = arr[j];
arr[j] = arr[j+1];
arr[j+1] = t;
}
}
}System.out.println("冒泡了~");
for(int i=0;i<arr.length;i++){System.out.println(arr[i]);}
//选择排序
//关键在于 原理! 第一个和后面的每一个比较:i = 0   j = i+1 a[i]>a[j]?  
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){int  t = arr[i];arr[i]=arr[j];arr[j] = t;}
}
}for(int i=0;i<arr.length;i++){System.out.println(arr[i]);}
}
}


冒泡排序.png (上传于2017-07-11 23:16:14)
冒泡排序.png
选择排序.png (上传于2017-07-11 23:16:14)
选择排序.png
java 笔记 | 阅读 652 次
文章评论,共0条
游客请输入验证码
文章归档