对于一组数,其中的每个数都为0到10内的一个整数,那么应该怎么去预测下一个数为多少呢(0到10内),求解答
不知道你这个问题是否已经解决, 如果还没有解决的话:代码如下:
package com.yyl.algorithm.questions;
import java.util.Scanner;
public class SortDemo {
/**
* 将String类型的数组转换成int类型的数组
*
* @param s
* @return
*/
private static int[] getInt(String[] str) {
int arr[] = new int[str.length];
for (int i = 0; i < str.length; i++) {
arr[i] = Integer.parseInt(str[i]);
}
return arr;
}
/**
* 给定的字符串使用,号分隔
*
* @param str
* @return
*/
private static String[] split(String str) {
String[] strSplit = str.split(",");
return strSplit;
}
/**
* 排序算法
*
* @param arr
*/
public static void sort(int[] arr) {
// 很久没写冒泡了,先冒个泡
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
swap(arr, j, j + 1);
}
}
}
}
// 很久没写快排了,快个排
public static void quicksort(int[] arr, int left, int right) {
// 递归终止条件
if (left > right) {
return;
}
int i = left, j = right;
// 以左边为基准
while (i < j) {
while (i < j && arr[j] >= arr[left]) {
j--;
}
while (i < j && arr[i] <= arr[left]) {
i++;
}
swap(arr, i, j);
}
// 交换i的位置与left基准
swap(arr, i, left);
// 再快排左右
quicksort(arr, left, i - 1);
quicksort(arr, i + 1, right);
}
/**
* 两数交换的方法
*
* @param arr 数组
* @param x 数组中元素的下标
* @param y 数组中元素的下标
*/
public static void swap(int[] arr, int x, int y) {
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个数字串,每个数字以逗号分隔 ");
String str = input.next();
//调用方法
String[] s = split(str);//使用逗号分隔
int[] arr = getInt(s);//调有获得整型数组的方法
// sort(arr);//调用排序的方法
quicksort(arr, 0, s.length-1);//调用排序的方法
for (int i : arr) {
System.out.print(i + "\t");
}
}
}