1.选择排序
package cn.tedu.test;
import java.util.Arrays;
import java.util.Random;
/*选择排序*/
public class Test13 {
public static void main(String[] args) {
int[] a=test();
choice(a);
}
private static void choice(int[] a) {
for (int i=0;i<a.length;i++){
for (int j=i+1;j<a.length-1;j++){
if (a[i]>a[j]){
int t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
System.out.println(Arrays.toString(a));
}
private static int[] test() {
int[] a=new int[5+new Random().nextInt(7)];
for (int i=0;i<a.length;i++){
a[i]=new Random().nextInt(100);
}
return a;
}
}
2.冒泡排序
package cn.tedu.test;
import java.util.Arrays;
import java.util.Random;
/*冒泡排序*/
public class Test13 {
public static void main(String[] args) {
int[] a=test2();
Bubbling(a);
}
private static void Bubbling(int[] a) {
for (int i=0;i<a.length;i++){
for (int j=a.length-1;j>i;j--){
if (a[j-1]>a[j]){
int t=a[j-1];
a[j-1]=a[j];
a[j]=t;
}
}
}
System.out.println(Arrays.toString(a));
}
private static int[] test2() {
int[] a=new int[6+new Random().nextInt(7)];
for (int i=0;i<a.length;i++){
a[i]=new Random().nextInt(100);
}
return a;
}
}
3.二分法查找
package cn.tedu.test;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
/*二分法查找*/
public class Test13 {
public static void main(String[] args) {
int[] a=array();
Arrays.sort(a);
System.out.println(Arrays.toString(a));
System.out.println("请输入你要查找的目标值");
int s=new Scanner(System.in).nextInt();
int index=search(a,s);
if (index<0){
System.out.println("找不到目标值");
}else {
System.out.println(s+"所在的位置为"+index);
}
}
private static int search(int[] a, int s) {
int lo = 0;
int hi = a.length-1;
int mid;
while (lo <= hi) {
mid = (lo+hi) / 2;
if (a[mid] < s) {
lo = mid+1;
} else if (a[mid] > s) {
hi = mid-1;
} else {
return mid;
}
}
return -1;
}
private static int[] array() {
int[] a=new int[8+new Random().nextInt(5)];
for (int i=0;i<a.length;i++){
a[i]=new Random().nextInt(100);
}
return a;
}
}