import java.util.Scanner;
public class test {
public static void main(String[] args) {
System.out.println("请输入数组里的个数");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
System.out.println("请输入");
int[] a = new int[n];
for (int i = 0; i < n; i++) {
int m = scanner.nextInt();
a[i] = m;
}
sort(a, 0, n - 1);
for (int i:a) {
System.out.println(i);
}
System.out.println("请输入key");
int m = scanner.nextInt();
find(a,m);
}
public static void find(int[] arr,int n){
int jishuqi=0;
for(int i=0;i<arr.length;i++){
if(arr[i]==n){
System.out.println("数字下标为"+i);
jishuqi++;
}
}
if (jishuqi==0)
System.out.println("key不在数组中");
}
public static void sort(int[] arr,int begin,int end) {
//先定义两个参数接收排序起始值和结束值
int a = begin;
int b = end;
//先判断a是否大于b
if (a >= b) {
//没必要排序
return;
}
//基准数,默认设置为第一个值
int x = arr[a];
//循环
while (a < b) {
//从后往前找,找到一个比基准数x小的值,赋给arr[a]
//如果a和b的逻辑正确--a<b ,并且最后一个值arr[b]>x,就一直往下找,直到找到后面的值大于x
while (a < b && arr[b] >= x) {
b--;
}
//跳出循环,两种情况,一是a和b的逻辑不对了,a>=b,这时候排序结束.二是在后面找到了比x小的值
if (a < b) {
//将这时候找到的arr[b]放到最前面arr[a]
arr[a] = arr[b];
//排序的起始位置后移一位
a++;
}
//从前往后找,找到一个比基准数x大的值,放在最后面arr[b]
while (a < b && arr[a] <= x) {
a++;
}
if (a < b) {
arr[b] = arr[a];
//排序的终止位置前移一位
b--;
}
}
//跳出循环 a < b的逻辑不成立了,a==b重合了,此时将x赋值回去arr[a]
arr[a] = x;
//调用递归函数,再细分再排序
sort(arr,begin,a-1);
sort(arr,a+1,end);
}
}
888888888888888888888888888888888888888888888888888888888888888
import java.util.Scanner;
public class test {
public static void main(String[] args) {
System.out.println("请输入数组里的个数");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
System.out.println("请输入");
int[] a = new int[n];
for (int i = 0; i < n; i++) {
int m = scanner.nextInt();
a[i] = m;
}
for(int i = 0;i<a.length-1;i++){
for(int j = 0;j<a.length-1-i;j++){
if(a[j] > a[j+1]){
int t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
for (int i:a) {
System.out.println(i);
}
System.out.println("请输入key");
int m = scanner.nextInt();
find(a,m);
}
public static void find(int[] arr, int key) {
int low = 0;
int hight = arr.length - 1;
while (low <= hight) {
int mid = (low + hight) / 2;
if (arr[mid] == key) {
System.out.println(mid);
System.exit(0);
}
if (arr[mid] < key) {
low = mid + 1;
} else {
hight = mid - 1;
}
}
System.out.println("null");
}
}
Java 语言 快速排列法 易懂代码
最新推荐文章于 2024-06-12 15:24:14 发布