提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
前言
一、简单排序
1.题目描述
2.冒泡排序思路以及代码
2.1 思路
2.2 代码
3.选择排序思路以及代码
3.1 思路
3.2 代码
4.插入排序思路以及代码
4.1 思路
4.2 代码
5.其他辅助方法
5.1 判断v是否大于w
5.2 交换数组元素
5.3 打印输出数组
二、简单排序完整代码
总结
提示:这里可以添加本文要记录的大概内容:
1月24日练习内容
该文章包括三种简单排序算法:冒泡排序,选择排序,插入排序
提示:以下是本篇文章正文内容,下面案例可供参考
使用简单排序中的冒泡排序,选择排序,插入排序三种方法对输入的数组进行排序
输入;
int[] nums1 = new int[]{3, 5, 2, 4, 1, 9, 8, 7, 11, 18, 12, 14, 19, 16};int[] nums2 = new int[]{3, 5, 2, 4, 1, 9, 8, 7, 11, 18, 12, 14, 19, 16};int[] nums3 = new int[]{3, 5, 2, 4, 1, 9, 8, 7, 11, 18, 12, 14, 19, 16};
输出:
冒泡排序结果:
1 2 3 4 5 7 8 9 11 12 14 16 18 19
选择排序结果:
1 2 3 4 5 7 8 9 11 12 14 16 18 19
插入排序结果:
1 2 3 4 5 7 8 9 11 12 14 16 18 19
1.比较相邻的元素,如果前一个元素比后一个元素大,就交换这两个元素的位置
2.对每一个相邻元素做同样的工作,从开始第一对元素到结尾的最后一对元素,最终最后位置的元素就是最大值
代码如下(示例):
//冒泡排序
public static void BubbleSort(int[] nums) {for (int i = nums.length - 1; i > 0; i--) {for (int j = 0; j < i; j++) {if (greater(nums[j], nums[j + 1])) {exch(nums, j, j + 1);}}}}
1.每一次遍历,都假定第一个元素为最小值,将最小值与后面的元素进行比较,如果后面元素中有比最小值更小的元素,则更新最小值,直到第一轮遍历完成
2,最小值位置与第一索引位置交换
代码如下(示例):
public static void SelectionSort(int[] nums) {for (int i = 0; i < nums.length; i++) {int minIndex = i;for (int j = i + 1; j < nums.length; j++) {if (greater(nums[minIndex], nums[j])) {minIndex = j;}}exch(nums, i, minIndex);}}
1.把所有元素分为两组,排序后和排序前
2.找到排序前数组的第一个位置的元素,将其插入排序后的数组
3.倒序遍历排序后数组,将其与待插入数组进行比较,若该元素比待插入元素小,则跟待插入元素进行交换,直到遍历完成
代码如下(示例):
public static void InsertSort(int[] nums) {for (int i = 1; i < nums.length; i++) {for (int j = i; j > 0; j--) {if (greater(nums[j - 1], nums[j])) {exch(nums, j - 1, j);} else {break;}}}}
代码如下(示例):
//判断v是否大于w
public static boolean greater(int v, int w) {return (v - w) > 0;
}
代码如下(示例):
public static void exch(int[] nums, int i, int j) {int temp = nums[i];nums[i] = nums[j];nums[j] = temp;
}
代码如下(示例):
//打印结果
public static void printInfo(int[] nums) {for (int num : nums) {System.out.print(num + " ");}}
代码如下(示例):
package sort;/*项目:三种简单排序算法冒泡排序:1.比较相邻的元素,如果前一个元素比后一个元素大,就交换这两个元素的位置2.对每一个相邻元素做同样的工作,从开始第一对元素到结尾的最后一对元素,最终最后位置的元素就是最大值选择排序:1.每一次遍历,都假定第一个元素为最小值,将最小值与后面的元素进行比较,如果后面元素中有比最小值更小的元素,则更新最小值,直到第一轮遍历完成2,最小值位置与第一索引位置交换插入排序:1.把所有元素分为两组,排序后和排序前2.找到排序前数组的第一个位置的元素,将其插入排序后的数组3.倒序遍历排序后数组,将其与待插入数组进行比较,若该元素比待插入元素小,则跟待插入元素进行交换,直到遍历完成* */
public class sort {public static void main(String[] args) {int[] nums1 = new int[]{3, 5, 2, 4, 1, 9, 8, 7, 11, 18, 12, 14, 19, 16};int[] nums2 = new int[]{3, 5, 2, 4, 1, 9, 8, 7, 11, 18, 12, 14, 19, 16};int[] nums3 = new int[]{3, 5, 2, 4, 1, 9, 8, 7, 11, 18, 12, 14, 19, 16};System.out.println("冒泡排序结果:");BubbleSort(nums1);printInfo(nums1);System.out.println();System.out.println("选择排序结果:");SelectionSort(nums2);printInfo(nums2);System.out.println();System.out.println("插入排序结果:");InsertSort(nums3);printInfo(nums3);System.out.println();}//冒泡排序public static void BubbleSort(int[] nums) {for (int i = nums.length - 1; i > 0; i--) {for (int j = 0; j < i; j++) {if (greater(nums[j], nums[j + 1])) {exch(nums, j, j + 1);}}}}//选择排序public static void SelectionSort(int[] nums) {for (int i = 0; i < nums.length; i++) {int minIndex = i;for (int j = i + 1; j < nums.length; j++) {if (greater(nums[minIndex], nums[j])) {minIndex = j;}}exch(nums, i, minIndex);}}//插入排序public static void InsertSort(int[] nums) {for (int i = 1; i < nums.length; i++) {for (int j = i; j > 0; j--) {if (greater(nums[j - 1], nums[j])) {exch(nums, j - 1, j);} else {break;}}}}//判断v是否大于wpublic static boolean greater(int v, int w) {return (v - w) > 0;}//交换两个数字public static void exch(int[] nums, int i, int j) {int temp = nums[i];nums[i] = nums[j];nums[j] = temp;}//打印结果public static void printInfo(int[] nums) {for (int num : nums) {System.out.print(num + " ");}}}