一、数组
(1)概念
同一种类型数据的集合。其实数组就是一个容器。
(2)数组的好处
可以自动给数组中的元素从0开始编号,方便操作这些元素。
(3)数组的定义格式
a,元素类型[ ] 数组名 = new 元素类型[元素个数或数组长度];
示例:int[ ] arr = new int[5];
b,元素类型[ ] 数组名 = new 元素类型[ ]{元素,元素,……};
示例:int[ ] arr= new int[ ]{3,5,1,7}; int[ ] arr={3,5,1,7};
二、求最值
步骤:
1,定义一个数组,并任意输入一组整数。
2,定义变量,初始化为数组中任意一个元素即可。
3,通过循环语句对数组进行遍历。
4,在变量过程中定义判断条件,如果遍历到的元素比变量中的大(小),就赋值给该变量。
源代码:
import java.util.Scanner;
public class FindMostValue {
public static void main(String[] args) {
int[] arr = new int[6];
Scanner sc = new Scanner(System.in);
System.out.print("请任意输入六个整数:");
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
}
getMost(arr);
}
public static void getMost(int[] arr){
int max,min;
max=min=arr[0];
for (int i = 0; i < arr.length; i++) {
if(max<arr[i])
max=arr[i];
else
min=arr[i];
}
System.out.println("该组整数的最大值为:" + max);
System.out.println("该组整数的最小值为:" + min);
}
}
三、排序
(1)选择排序算法
/*
任意输入6个整数,
通过选择排序进行升序排序。
*/
import java.util.Scanner;
public class ArrayDemo {
public static void main(String[] args) {
int[] arr = new int[6];
Scanner sc = new Scanner(System.in);
System.out.print("请任意输入六个整数:");
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
}
selectSort(arr);
printArray(arr);
}
public static void selectSort(int[] arr){//选择排序
for (int x = 0; x < arr.length-1; x++) {
for (int y = x+1; y < arr.length; y++) {
if(arr[x]>arr[y])
swap(arr,x,y);
}
}
}
public static void printArray(int[] arr)//输出数组
{
System.out.print("[");
for(int x=0;x<arr.length;x++)
{
if(x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.println(arr[x]+"]");
}
}
public static void swap(int[] arr,int a,int b){//置换功能提取
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
}
(2)冒泡排序算法
/*
任意输入6个整数,
通过冒泡排序进行升序排序。
*/
import java.util.Scanner;
public class ArrayDemo {
public static void main(String[] args) {
int[] arr = new int[6];
Scanner sc = new Scanner(System.in);
System.out.print("请任意输入六个整数:");
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
}
bubbleSort(arr);
printArray(arr);
}
public static void bubbleSort(int[] arr){//冒泡排序
for (int x = 0; x < arr.length-1; x++) {
for (int y = 0; y < arr.length-x-1; y++) {
if(arr[y]>arr[y+1])
swap(arr,y,y+1);
}
}
}
public static void printArray(int[] arr)//输出数组
{
System.out.print("[");
for(int x=0;x<arr.length;x++)
{
if(x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.println(arr[x]+"]");
}
}
public static void swap(int[] arr,int a,int b){//置换功能提取
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
}
(3)插入排序算法
public static void insertSort(int[] args){//插入排序算法
for(int i=1;i<args.length;i++){
for(int j=i;j>0;j--){
if (args[j]<args[j-1]){
int temp=args[j-1];
args[j-1]=args[j];
args[j]=temp;
}else break;
}
}
}
(4)利用Arrays带有的排序方法快速排序
import java.util.Arrays;
public class Test2{
public static void main(String[] args){
int[] a={5,4,2,4,9,1};
Arrays.sort(a); //进行排序
for(int i=0; i<= a.length;i++){
System.out.print(a[i]);
}
}
}
注意关键点:Arrays.sort(arr)在Java中,已经定义好的一种排序方式。开发中,对数组排序,要使用该句代码。
四、进制转换
在Java中有定义好的函数,可以将十进制转换成二进制、八进制和十六进制的形式。
Integer.toBinaryString(int i);将十进制转换成二进制。
Integer.toOctalString(int i);将十进制转换成八进制。
Integer.toHexString(int i);将十进制转换成十六进制。
/*
输入一个整数(十进制)
然后分别输出该数的二进制、八进制和十六进制的形式
*/
import java.util.Scanner;
public class ArrayTest {
public static void main(String[] args) {
char[] chs = {'0','1','2','3',
'4','5','6','7',
'8','9','A','B',
'C','D','E','F'};//定义进制表
char[] arr = new char[32];//定义一个存储容器
int pos = arr.length;//定义一个操作数组的指针
Scanner sc = new Scanner(System.in);
int num;//定义一个存储输入整数的变量
System.out.print("请输入一个整数(num):");
num = sc.nextInt();
toOther(chs,arr,pos,num,1);//二进制
toOther(chs,arr,pos,num,3);//八进制
toOther(chs,arr,pos,num,4);//十六进制
}
public static void toOther(char[] chs,char[] arr,int pos,int num,int p){
int n=(int)(Math.pow(2, p)-1);//定义一个整数,来存放将要&的数
if(p==1){
System.out.print("该整数的二进制是:");
}
else if(p==3){
System.out.print("该整数的八进制是:");
}
else{
System.out.print("该整数的十六进制是:");
}
do{
int temp = num & n;
arr[--pos]=chs[temp];
num = num>>>p;
}while(num!=0);
for (int i = pos; i < arr.length; i++) {
System.out.print(arr[i]);
}
System.out.println();
}
}