1.字符串或數字反轉問題
對于數字,我們可以將其轉化成String類型的字符串進行反轉。我們可以使用for循環獲取字符串的每個字符,然后重新構造一個新的字符串,這樣就可以得到反轉后的字符串了。
Scanner input = new Scanner(System.in);
System.out.println("請輸入一個字符串:");
String num = input.next();
String res = "";
for (int i=num.length()-1;i>=0;i--) {
res = res + num.charAt(i);
}
System.out.println("反轉的結果為: " + res);
而對于純數字類型,我們還可以采用這樣的方式進行數字反轉:首先對數字進行取余,輸出取余的結果,然后對數字進行取整,作為下一次進入循環的條件。
Scanner input = new Scanner(System.in);
System.out.println("請輸入數字:");
int inputNum = input.nextInt();
int res;
while(inputNum != 0) {
res = inputNum % 10;
System.out.print(res);
inputNum /= 10;
}
2.求數組最大值問題
方法一:初始化數組中的某個元素,但是初始化值不可定義為0,因為如果數組中的值全部為負數時,這樣獲得數組的最大值就為0,不符合事實。
int max = arr[0];
for (int i = 0;i < arr.length;i++) {
max = arr[i] > max ? arr[i] : max;
}
System.out.println(max);
方法二:初始化數組元素的下標
int maxIndex = 0;
for (int i = 0;i < arr.length;i++) {
if (arr[i] > arr[maxIndex]) {
maxIndex = i;
}
}
System.out.println(arr[maxIndex]);
3.冒泡排序問題
對于冒泡排序,它有以下特點:
①比較相鄰的元素,如果第一個比第二個大,就交換它們;
②對每一對相鄰的元素都做同樣的工作,從開始第一對到結尾的最后一對。在這一點,最后的元素會是最大的數;
③針對所有的元素重復以上步驟,除了最后一個;
④持續每次對越來越少的元素重復以上步驟,直至沒有任何一對數字需要進行比較。
int[] nums = {28,18,79,65,32};
int temp;
//控制比較多少輪
for (int i = 0;i < nums.length - 1;i++) {
//控制每輪的比較次數
for (int j = 0;j < nums.length - 1 - i;j++) {
if (nums[j] >nums[j+1]) {
//兩數互換
temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
//迭代輸出排序后的數組
for (int n : nums) {
System.out.println(n);
}
4.插入排序問題
基本思想:對于一個數組,從下表為1即第二個數字開始進行插入,當要插入的值比它前面的值小的時候,把前面的數字替換到當前的下標位置上。
int[] nums = {23,12,67,21,31};
//控制輪數,從第二個數字開始(下標為1)
for(int i = 1; i < nums.length; i++) {
int j = i;
int temp = nums[j];//將要插入的值存儲到臨時變量
//1.當要插入的值比前面的值小的時候進入循環
//2.通過j>0 短路操作避免出現nums[-1]的情況
while(j > 0 && temp < nums[j-1]) {
nums[j] = nums[j-1];//把前一個數字替換到當前位置上
j--;//修改j變量的值
}
nums[j] = temp;//將臨時變量的值賦值給對應的下標
}
for (int n : nums) {
System.out.println(n);
}
5.選擇排序問題
工作原理:每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的數據元素排完。
int[] nums = {23,32,14,16,78};
for (int i = 0;i < nums.length - 1;i++) {
for (int j = i + 1;j < nums.length;j++) {
if (nums[i] > nums[j]) {
int temp = nums[j];
nums[j] = nums[i];
nums[i] = temp;
}
}
}
for (int n : nums) {
System.out.println(n);
}