网站建设帮助中心,网站正常打开速度,福田做棋牌网站建设找哪家效益快,佛山外贸网站建设精英1、冒泡排序 冒泡排序是从下标 1 遍历到 n#xff0c;每当遇到大于下一个的#xff0c;就和上一个交换位置#xff0c;这样最大的就移动到了 n 的位置#xff0c;然后从头再从 1 遍历到 n-1#xff0c;把第二大的移动到 n-1 的位置#xff0c;依此类推#xff0c;每次从…1、冒泡排序 冒泡排序是从下标 1 遍历到 n每当遇到大于下一个的就和上一个交换位置这样最大的就移动到了 n 的位置然后从头再从 1 遍历到 n-1把第二大的移动到 n-1 的位置依此类推每次从剩下的里面挑出最大的一个放在末尾。它的特点是每次遍历过程中都会不断的交换位置即为冒泡排序是一种稳定排序。 package com.fdw.algorithm.sort;import java.util.Arrays;/*** program: RedisDemo* description: 冒泡排序* author: fudingwei* create: 2024-05-30 13:58**/
public class BublingSort {public static void main(String[] args) {int[] array new int[]{6,5,72,1,4,5,12,8,3,2,7};sort(array);System.out.println(Arrays.toString(array));}public static void sort(int[] array){for (int i 0; i array.length; i) {boolean flag true;//关键是j array.length-i-1for (int j 0; j array.length-i-1; j) {//冒泡排序的过程中不停的在交换if(array[j]array[j1]){swap(array,j,j1);flag false;}}//没有进行交换说明已经有序if(flag){break;}}}public static void swap(int[] array,int left,int right){int temp array[left];array[left] array[right];array[right] temp;}
}2、选择排序 选择排序是是从下标 1 遍历到 n找出最小数的下标然后将最小数和下标 1 交换位置然后再从下标 2 遍历到 n找出第二小的数将其和下标 2 交换位置依此类推每次从剩下的里面挑出最小的一个放在前面。它的特点是每次遍历过程中只会交换一次位置即为选择排序是一种不稳定排序。 package com.fdw.algorithm.sort;import java.util.Arrays;/*** program: RedisDemo* description: 选择排序* author: fudingwei* create: 2024-05-30 14:24**/
public class SelectSort {public static void main(String[] args) {int[] array new int[]{6, 5, 72, 1, 4, 5, 12, 8, 3, 2, 7};sort(array);System.out.println(Arrays.toString(array));}public static void sort(int[] array) {for (int i 0; i array.length; i) {int min i;//每次选出最小的存下标for (int j i 1; j array.length; j) {if (array[j] array[min]) {min j;}}//把最小的放第一位if (min ! i) {swap(array, i, min);}}}public static void swap(int[] array, int left, int right) {int temp array[left];array[left] array[right];array[right] temp;}
}3、插入排序 插入排序是从第二位开始遍历遍历时当这一位数小于前一位时就会和前面的进行交换位置如果交换完后该数仍然小于前一位会继续交换一直到该数不小于前一位为止它的特点是每次遍历前都能保证前面的数据已经是递增的状态将数据插入到已有顺序中它应该在的位置即为插入排序是一种稳定排序。 package com.fdw.algorithm.sort;import java.util.Arrays;/*** program: RedisDemo* description: 插入排序* author: fudingwei* create: 2024-05-30 11:54**/
public class InsertSort1 {public static void main(String[] args) {int[] data {1,1,2,8,4,2,1,6,4,8,6,9,2,1};sort(data);System.out.println(Arrays.toString(data));}public static void sort(int[] array){for (int i 1; i array.length; i) {//遍历i前的值 大于array[i]就后移一边移动一边排序保证了temp前的数据一定是递增的for (int j i-1; j 0; j--) {if(array[j]array[j1]){//交换swap(j1,j,array);}else {break;}}}}public static void swap(int l,int r,int[] array){int temp array[l];array[l] array[r];array[r] temp;}
}总结 三种排序算法都是使用了两个for循环来遍历时间复杂度都是O(n的平方)选择排序是不稳定的其他两种是稳定的三种算法都涉及到位置的交换选择排序交换的次数最少。