解决某个实际问题的过程和方法!
为什么要学习算法?
锻炼编程思维
- 简单认识算法
- 排序算法
- 冒泡排序
- 学习算法技巧
- (升序和降序)
- 1.先搞清楚算法的流程
- 2.直接去推敲如何写代码
- 冒泡排序
- 每次从数组中找出最大值放在数组的后面去
-
package Demo0706; import java.util.Arrays; public class DemoTest { public static void main(String[] args) { //1.定义一个静态数组 int[] arr = {5, 3, 2, 1}; //2.定义一个循环控制排几轮 for (int i = 0; i < arr.length - 1; i++) { //i = 0 1 2 [5, 2, 3, 1] 次数 //i = 0 第一轮 0 1 2 3 //i = 1 第二轮 0 1 2 //i = 2 第三轮 0 1 for (int j = 0; j < arr.length - i - 1; j++) { //判断当前位置的元素值,是否大于后一个位置处的元素值,如大于则交换 if (arr[j] > arr[j + 1]) { int temp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = temp; } } } System.out.println(Arrays.toString(arr)); } }
选择排序
-
package Demo0707; import java.util.Arrays; public class Demo_选择排序 { public static void main(String[] args) { //1.准备一个数组 int[] arr = {5, 2, 3, 1}; //2.控制选择几轮 for (int i = 0; i < arr.length - 1; i++) { //i = 0 第一轮 j = 1 2 3 //i = 1 第二轮 j = 2 3 //i = 2 第三轮 j = 3 for (int j = i + 1; j < arr.length; j++) { if (arr[i] > arr[j]) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } System.out.println(Arrays.toString(arr)); System.out.println("===============我是分割线==============="); //优化 //1.准备一个数组 int[] arr2 = {5, 2, 3, 1}; //2.控制选择几轮 for (int i = 0; i < arr2.length - 1; i++) { int minIndex = i; for (int j = i + 1; j < arr2.length; j++) { if (arr2[minIndex] > arr2[j]) { minIndex = j; } } if (i != minIndex) { int temp = arr2[i]; arr2[i] = arr2[minIndex]; arr2[minIndex] = temp; } } System.out.println(Arrays.toString(arr2)); } }