1、关于一维数组
1)定义:int[]arr = new int[i]; i表示数组元素的个数
2)赋值:int[]arr = {i,j,k,l,.....}; I,J,K 均表示整形数字。
3)遍历:
例如:
class Array{
public static void main(String[]args){
//定义数组
int[]arr = {12,23,34,21,13}
//for循环
for(int i = 0;i<arrlength;i++){
System.out.println(arr[i]+“ ”);
}
}
}
输出为:12 23 34 21 13
2、求数组的最值
1)冒泡排序:
规则:不断比较数组中相邻的两个元素,较小者想前排,较大者向后排;
例如:
class ArrayMaopao{
public static void main(String[]args){
//定义数组
int[]arr = {12,2,34,43,23};
// 调用排序方法
bubbleSort(arr);
// 调用打印方法
printArray(arr);
System.out.println(arr);
}
//定义打印的方法:
public static void printArray(int[]arr){
//遍历
for(int i = 0;i<arr,legth;i++){
System.out.print(arr[i]);
}
}
//定义排序的方法
public static void bubbleSort(int[] arr) {
// 规定循环的次数
for (int i = 0; i < arr.length - 1; i++) {
// 规定比较的次数arr.length-i-1
for (int j = 0; j < arr.length - i - 1; j++) {
// 判断元素之间的大小并进行排序
if (arr[j] > arr[j + 1]) {
// 创建中间变量将arr[j]和arr[j+1]的索引位置进行对换
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
}
}
输出结果为:2 12 23 34 43
2)选择排序
排序规则:从第一个元素开始,按照从前往后的顺序与每一个元素进行比较,若大于
要比较的元素,则继续向后比较,若小于要比较的元素,则与其对换位置,继续执行此规则。
public class ArrayChoose {
public static void main(String[] args) {// 定义一个一维数组
int[] arr1 = { 23, 34, 12, 67, 43 };
// 调用排序方法
bubbleSort1(arr1);
System.out.print("该数组元素从小到大排序后为:[");
// 调用打印方法
printArray1(arr1);
System.out.println(arr1);
}
// 创建一个打印方法
public static void printArray1(int[] arr1) {
// 遍历该数组
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i] + ",");// 打印该数组元素
}
System.out.println("]");
}
// 创建一个选择排序方法
public static void bubbleSort1(int[] arr1) {
// 规定循环次数(外层循环)
for (int i = 0; i < arr1.length - 1; i++) {
// 规定比较次数
for (int j = i + 1; j < arr1.length; j++) {
// 判断元素之间的大小并进行排序
if (arr1[i] > arr1[j]) {
// 定义中间变量对换arr1[i]和arr1[j]的索引位置
int temp = arr1[i];
arr1[i] = arr1[j];
arr1[j] = temp;
}
}
}
}
}
3)折半查找(二分查找):
前提:数组一定是有序的
作用:求出要求的元素所在数组中的索引
步骤:a、定义最小索引和最大索引
b、计算中间索引
c、判断:中间 索引元素和需要查找的元素比较
若相等:直接返回中间索引
如果大了,则向左边找
如果小了,则向右边找
d、如果都不符合,则重新计算中间索引,回到步骤b继续查找
例如:
package Array;
public class ArrayHalf {
public static void main(String[] args) {
//定义有序数组
int[]arr2 = {2,4,6,8,9,10};
int index = search(arr2, 9) ;
System.out.println(index);
}
//定义计算中间索引的方法
public static int search(int[]arr2,int half){
int max = arr2.length-1;
int min = 0;
int mid = (min+max)/2;
while(arr2[mid]!=half) {
//不相等
if(arr2[mid] >half) {
max = mid -1 ;
}else {
min = mid + 1 ;
}
//如果这value在数组中找不到,找不到返回-1
if(min>max) {
return -1 ;
}
//重新计算出中间索引
mid = (max+min)/2 ;
}
return mid ;
}
}
这是三种基本的数组排序方式:明天来阐述如何利用这三种排序方式来求出未经过排序的一维数组
所需要求得索引。