java猜数字游戏快速排序
时间: 2023-11-23 22:56:31 浏览: 63
猜数字游戏 java
根据提供的引用内容,我们可以看到其中包含了Java数组排序和数组猜数字游戏案例的内容。因此,我们可以结合这两个内容来回答这个问题。
Java中的快速排序是一种常用的排序算法,其基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,然后再分别对这两部分记录继续进行排序,以达到整个序列有序的目的。
下面是一个使用Java实现快速排序的例子:
```java
public class QuickSort {
public static void quickSort(int[] arr, int left, int right) {
if (left < right) {
int i = left, j = right, x = arr[left];
while (i < j) {
while (i < j && arr[j] >= x) {
j--;
}
if (i < j) {
arr[i++] = arr[j];
}
while (i < j && arr[i] < x) {
i++;
}
if (i < j) {
arr[j--] = arr[i];
}
}
arr[i] = x;
quickSort(arr, left, i - 1);
quickSort(arr, i + 1, right);
}
}
public static void main(String[] args) {
int[] arr = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
quickSort(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr));
}
}
```
上述代码中,我们定义了一个`quickSort`方法,该方法接收一个整型数组`arr`、一个整数`left`和一个整数`right`作为参数,其中`left`和`right`分别表示待排序数组的左右边界。在方法中,我们首先判断`left`是否小于`right`,如果是,则进行快速排序。具体实现过程如下:
1. 定义三个整型变量`i`、`j`和`x`,其中`i`和`j`分别表示待排序数组的左右指针,`x`表示待排序数组的第一个元素。
2. 在循环中,我们首先从右向左遍历数组,找到第一个小于`x`的元素,将其赋值给`arr[i]`,然后将`i`加1。接着从左向右遍历数组,找到第一个大于等于`x`的元素,将其赋值给`arr[j]`,然后将`j`减1。
3. 如果`i`小于`j`,则将`arr[j]`赋值给`arr[i]`,然后将`i`加1,`j`减1。
4. 当`i`等于`j`时,将`x`赋值给`arr[i]`。
5. 最后,递归调用`quickSort`方法,对左右两个子数组进行排序。
接下来,我们可以结合数组猜数字游戏案例来演示如何使用快速排序。在这个案例中,我们需要生成一个长度为10的随机整数数组,并让用户猜测其中的一个数字。每次猜测后,程序会告诉用户猜测的数字是大于还是小于目标数字,直到用户猜中为止。
下面是一个使用Java实现的数组猜数字游戏案例:
```java
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class GuessNumber {
public static void main(String[] args) {
int[] arr = new int[10];
Random random = new Random();
for (int i = 0; i < arr.length; i++) {
arr[i] = random.nextInt(100);
}
quickSort(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr));
Scanner scanner = new Scanner(System.in);
int target = arr[random.nextInt(10)];
System.out.println("猜一个0到99之间的数字:");
while (true) {
int guess = scanner.nextInt();
if (guess == target) {
System.out.println("恭喜你猜对了!");
break;
} else if (guess < target) {
System.out.println("猜小了,请继续猜:");
} else {
System.out.println("猜大了,请继续猜:");
}
}
}
public static void quickSort(int[] arr, int left, int right) {
if (left < right) {
int i = left, j = right, x = arr[left];
while (i < j) {
while (i < j && arr[j] >= x) {
j--;
}
if (i < j) {
arr[i++] = arr[j];
}
while (i < j && arr[i] < x) {
i++;
}
if (i < j) {
arr[j--] = arr[i];
}
}
arr[i] = x;
quickSort(arr, left, i - 1);
quickSort(arr, i + 1, right);
}
}
}
```
上述代码中,我们首先生成一个长度为10的随机整数数组,并使用快速排序对其进行排序。然后,我们随机选择一个数组元素作为目标数字,并让用户猜测该数字。在循环中,我们不断读取用户输入的数字,并与目标数字进行比较,直到用户猜中为止。
阅读全文