/*
编程题
获取int数组中的最值
*/
public class Topic1 {
public static void main(String[] args) {
int[] array = {7,8,5,4,6,9,3,2,1,0};
int max = array[0];
int min = array[0];
for(int n = 1;n<array.length;n++) {
if(array[n] > max) {
max = array[n];
} else if(array[n] < min) {
min = array[n];
}
}
System.out.println("最大值:"+max);
System.out.println("最小值:"+min);
}
}
/*
编程题
数组元素逆置
*/
public class Topic2 {
public static void main(String[] args) {
int[] array = {5,4,6,3,8,7,9,1,2,0};
//逆置
int temp = 0;//元素交换容器
for(int n = 0;n<array.length/2;n++) {
temp = array[n];
array[n] = array[array.length-1-n];
array[array.length-1-n] = temp;
}
//遍历
for(int i : array) {
System.out.print("["+i+"]");
}
System.out.println();
//逆置
for(int n = 0,m = array.length-1;n<array.length/2;n++,m--) {
temp = array[n];
array[n] = array[m];
array[m] = temp;
}
for(int i : array) {
System.out.print("["+i+"]");
}
}
}
/*
得到某一元素在数组中第一次出现的索引
*/
public class Topic3 {
public static void main(String[] args) {
int[] array = {4,1,2,3,5,6,4,1,2,5,7,98,25,455,4,7,89,2};
int index = -1;//index:用来定义元素第一次出现的索引
int m = 7;//m:要查找的元素
for(int n = 0;n<array.length;n++) {
if(array[n] == m) {
index = n;
}
}
System.out.println("元素:"+m);
System.out.println("第一次出现的索引:"+index);
}
}
/*
折半查找:数组有序
二分查找(折半查找)
定义最大索引、最小索引
计算中间索引
中间索引的值于最大值、最小值比较
*/
public class ArrayDemo {
public static void main(String[] args) {
int[] arr = new int[100];
for(int n = 0;n<arr.length;n++) {
arr[n] = n;
}
for(int i : arr) {
System.out.print("["+i+"]");
if(i!=0&&i%9 == 0)
System.out.println();
}
int value = 77;
int index = -1;
int min = 0;
int max = arr.length-1;
int mid = (min + max)/2;
if(arr[mid] == value) {
index = mid;
}
while(arr[mid] != value) {
if(value > arr[arr.length-1])break;
if(value < arr[0])break;
if(min == max-2)break;
if(arr[mid] < value) {
min = mid-1;
} else {
max = mid+1;
}
mid = (min+max)/2;
if(mid == value) {
index = mid;
break;
}
}
System.out.println(index);
}
}
/*
冒泡排序:相邻元素两两比较,大的往后放
int[] arr = {24,69,80,57,13}
原始的顺序 24 69 80 57 13
第一次比较 24 69 57 13 80
第二次比较 24 57 13 69 80
第三次比较 24 13 57 69 80
第四次比较 13 24 57 69 80
*/
public class BubbleSort {
public static void main(String[] args) {
int[] arr = {24,69,80,57,13};
for(int i : arr) {
System.out.print("["+i+"]");
}
System.out.println();
for(int m = 0;m<arr.length-1;m++) {
for(int n = 0;n<arr.length-1-m;n++) {
if(arr[n] > arr[n+1]) {
int temp = arr[n];
arr[n] = arr[n+1];
arr[n+1] = temp;
}
}
}
for(int i : arr) {
System.out.print("["+i+"]");
}
System.out.println();
}
}
/*
选择排序:
把第一个元素依次和后面的所有元素进行比较。
第一次结束后,就会有最小值出现在最前面,依次类推。
*/
public class SelectionSort {
public static void main(String[] args) {
int[] data = {5,45,68,98,36};
for(int i : data) {
System.out.print("["+i+"]");
}
System.out.println();
for (int x = 0; x < data.length - 1; x++) {
for (int y = x + 1; y < data.length; y++) {
if (data[y] < data[x]) {
int temp = data[y];
data[y] = data[x];
data[x] = temp;
}
}
}
for(int i : data) {
System.out.print("["+i+"]");
}
System.out.println();
}
}