数组_——格式
格式一:
元素类型[] 数组名 = new 元素类型[]{元素,元素,……};
int [] arr = new int[]{89,34,270,17};
常规的初始化值
int[] arr={89,34,270,17};
静态的初始化值
什么时候用哪一种格式?
格式一:
需要一个容器,但是不明确容器的具体数据。
int[] arr=new int[3];
格式二:
需要一个容器,存储已知的具体数据。
int[] arr=new int[]{89,34,270,17};
数组——常见的操作-遍历
对数组操作最基本的动作就是存和取。
核心思想:就是角标的操作。
class DemoCtil{
public static void main(String[] args){
int[] arr ={89,34,270,17};
System.out.println("length:"+arr.length);
for(int x=0;x<arr.length;x++){
System.out.println("arr["+x+"]="+arr[x]+",");
}
}
}注:这个是正向遍历
class DemoCtil_1{
public static void main(String[] args){
int arr={89,34,270,17};
for(int x =arr.length;x>=0;x--){
System.out.println("arr["+x+"]="+arr[x]+",")
}
}
}注:这个是反向遍历
注:arr.length的意思是arr的长度
这个是查询数组里面的个数System.out.println("length:"+arr.length);
数组的常见操作
-
获取最值(最大值,最小值)
-
排序(选择排序,冒泡排序)
-
折半查找(二分查找)
1,获取最值:
获取数组中的最大值。
思路:
-
需要进行比较,并定义变量记录每次比较后较大的值。
-
对数组中的元素进行遍历取出,和变量中记录的元素进行比较。
如果遍历到的元素大于变量中记录的元素,就用变量记录住该打的值。
3.遍历结果,该变量记录就是最大值。
定义一个功能来实现。
明确一:这个功能的结果是什么?
是数组中的元素。int
明确二:这个功能实现过程中是否需要未知内容参与运算?
数组。
例:
class DemoCtil2{
public static void main(String[] args){
int[] arr={34,19,11,109,3,56};
int max=getmax(arr);
System.out.println("max="+max);
}
public static int getMax(int[] arr) {
int maxElement=arr[0];//定义变量记录最大的值
for(int x=1;x<arr.length;x++){
if(arr[x]>maxElement])
maxElement=arr[x];
}
return maxElement;
}
}
class DemoCtil3{
public static void main(String[] args){
int[] arr={34,19,11,109,3,56};
int max=getMax_2(arr);
System.out.println("max="+max);
}
public static int getMax_2(int[] arr){
int maxIndex=0;
for(int x=1;x<arr.length;x++){
if(arr[x]>arr[maxIndex])
maxIndex=x;
}
return arr[maxIndex];
}
}注:两种方式
数组常见操作——选择排序
选择排序:
class DemoCtil4{
//注:遍历数组的功能
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]+"x ");//注:这了有个空格键
else
System.out.println(arr[x]+"]");
}
} //调用区
public static void main(String[] args){
int[] arr={34,19,11,109,3,56};
PrintArray(arr);
selectSort(arr);
PrintArray(arr);
} //第三方变量的功能
public static void swap(int[] arr,int a,int b){
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
} //选择排序
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);
}
}
}
}
}
数组常见操作——冒泡排序
冒泡排序:
class DemoCtil5{
//遍历数组的功能
public static void PrintArray(int[] arr){
System.out.print("[");
for(int x=0;x<arr.length;x++){
if(x!=arr.length-1)
System.out.printl(arr[x]+", ");//这里有空格键
else
System.out.prin(arr[x]+"]");
}
}//第三方变量功能
public static void swap(int[] arr,int a,int b){
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}//调用区
public static void main(String[] args){
int[] arr={34,19,11,109,3,56}
PrintArray(arr);
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-1-x;y++){
if(arr[y]<arr[y+1])
swap(arr,y,y+1);
}
}
}
}
注:内循环
-1:位避免角标越界。
-x:为了让外循环增加一次,内循环参数比较的元素个数递减。
排序性能问题
class DemoCtil6{ //遍历数组的功能
public static void main(String[] args){
System.out.print("[");
for(int x=0;x<arr.length;x++){
if(x!=arr.length-1)
System.out.print(arr[x]+", ");//这里有一个空格键
else
System.out.printl(arr[x]+"]");
}
} //调用区
public static void main(String[] args){
int[] arr={34,19,11,109,3,56};
PrintArray(arr);
selectSort_2(arr);
printArray(arr);
} //第三方变量的功能
public static void swap(int[] arr,int a,int b){
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}
public static void selectSort_2(int[] arr){
for(int x=0;x<arr.length-1;x++){
int num=arr[x];
int index=x;
for(int y=x+1;y<arr.length;y++){
if(num>arr[y]){
num=arr[y];
index=y;
}
}
if(index!=x)
sawp(arr,x,index);
}
}
}
数组_——格式
格式一:
元素类型[] 数组名 = new 元素类型[]{元素,元素,……};
int [] arr = new int[]{89,34,270,17};
常规的初始化值
int[] arr={89,34,270,17};
静态的初始化值
什么时候用哪一种格式?
格式一:
需要一个容器,但是不明确容器的具体数据。
int[] arr=new int[3];
格式二:
需要一个容器,存储已知的具体数据。
int[] arr=new int[]{89,34,270,17};
数组——常见的操作-遍历
对数组操作最基本的动作就是存和取。
核心思想:就是角标的操作。
class DemoCtil{
public static void main(String[] args){
int[] arr ={89,34,270,17};
System.out.println("length:"+arr.length);
for(int x=0;x<arr.length;x++){
System.out.println("arr["+x+"]="+arr[x]+",");
}
}
}注:这个是正向遍历
class DemoCtil_1{
public static void main(String[] args){
int arr={89,34,270,17};
for(int x =arr.length;x>=0;x--){
System.out.println("arr["+x+"]="+arr[x]+",")
}
}
}注:这个是反向遍历
注:arr.length的意思是arr的长度
这个是查询数组里面的个数System.out.println("length:"+arr.length);
数组的常见操作
-
获取最值(最大值,最小值)
-
排序(选择排序,冒泡排序)
-
折半查找(二分查找)
1,获取最值:
获取数组中的最大值。
思路:
-
需要进行比较,并定义变量记录每次比较后较大的值。
-
对数组中的元素进行遍历取出,和变量中记录的元素进行比较。
如果遍历到的元素大于变量中记录的元素,就用变量记录住该打的值。
3.遍历结果,该变量记录就是最大值。
定义一个功能来实现。
明确一:这个功能的结果是什么?
是数组中的元素。int
明确二:这个功能实现过程中是否需要未知内容参与运算?
数组。
例:
class DemoCtil2{
public static void main(String[] args){
int[] arr={34,19,11,109,3,56};
int max=getmax(arr);
System.out.println("max="+max);
}
public static int getMax(int[] arr) {
int maxElement=arr[0];//定义变量记录最大的值
for(int x=1;x<arr.length;x++){
if(arr[x]>maxElement])
maxElement=arr[x];
}
return maxElement;
}
}
class DemoCtil3{
public static void main(String[] args){
int[] arr={34,19,11,109,3,56};
int max=getMax_2(arr);
System.out.println("max="+max);
}
public static int getMax_2(int[] arr){
int maxIndex=0;
for(int x=1;x<arr.length;x++){
if(arr[x]>arr[maxIndex])
maxIndex=x;
}
return arr[maxIndex];
}
}注:两种方式
数组常见操作——选择排序
选择排序:
class DemoCtil4{
//注:遍历数组的功能
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]+"x ");//注:这了有个空格键
else
System.out.println(arr[x]+"]");
}
} //调用区
public static void main(String[] args){
int[] arr={34,19,11,109,3,56};
PrintArray(arr);
selectSort(arr);
PrintArray(arr);
} //第三方变量的功能
public static void swap(int[] arr,int a,int b){
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
} //选择排序
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);
}
}
}
}
}
数组常见操作——冒泡排序
冒泡排序:
class DemoCtil5{
//遍历数组的功能
public static void PrintArray(int[] arr){
System.out.print("[");
for(int x=0;x<arr.length;x++){
if(x!=arr.length-1)
System.out.printl(arr[x]+", ");//这里有空格键
else
System.out.prin(arr[x]+"]");
}
}//第三方变量功能
public static void swap(int[] arr,int a,int b){
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}//调用区
public static void main(String[] args){
int[] arr={34,19,11,109,3,56}
PrintArray(arr);
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-1-x;y++){
if(arr[y]<arr[y+1])
swap(arr,y,y+1);
}
}
}
}
注:内循环
-1:位避免角标越界。
-x:为了让外循环增加一次,内循环参数比较的元素个数递减。
排序性能问题
class DemoCtil6{ //遍历数组的功能
public static void main(String[] args){
System.out.print("[");
for(int x=0;x<arr.length;x++){
if(x!=arr.length-1)
System.out.print(arr[x]+", ");//这里有一个空格键
else
System.out.printl(arr[x]+"]");
}
} //调用区
public static void main(String[] args){
int[] arr={34,19,11,109,3,56};
PrintArray(arr);
selectSort_2(arr);
printArray(arr);
} //第三方变量的功能
public static void swap(int[] arr,int a,int b){
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}
public static void selectSort_2(int[] arr){
for(int x=0;x<arr.length-1;x++){
int num=arr[x];
int index=x;
for(int y=x+1;y<arr.length;y++){
if(num>arr[y]){
num=arr[y];
index=y;
}
}
if(index!=x)
sawp(arr,x,index);
}
}
}