java常用三种排序算法---(插入,冒泡,顺序)及其时间复杂度

来源:互联网 发布:男士风衣品牌 知乎 编辑:程序博客网 时间:2024/06/15 14:33

java三种排序算法

1.插入排序

插入排序,稳定(改变一部分数组数值的位置)(时间最坏复杂度 O(n^2)最优均为O(n))

插入排序的算法核心为把当前插入的位置之前变为有序

2.冒泡排序

冒泡排序,不稳定(会改变大部分部分数组数值的位置)(时间最坏复杂度 O(n^2)最优均为O(n))

冒泡排序每次出来一个最值是其核心算法所在

3.选择排序

选择排序,不稳定(会改变大部分数组原本位置的值)(时间最坏最优复杂度均为O(n^2))

选择排序是拿每一个数和其后面所有的数比较

import java.util.Arrays;public class Test2 {//java三种排序算法(插入,冒泡,顺序)及其时间复杂度public static void main(String[] args) {// TODO Auto-generated method stubint[] arr=new int[]{3,1,9,4,8,9,2,10};//插入排序insertSort(arr);//冒泡排序bubleSort(arr);//选择排序selectSort(arr);}//插入排序,稳定(改变一部分数组数值的位置)(时间最坏复杂度 O(n^2)最优均为O(n))//插入排序的算法核心为把当前插入的位置之前变为有序public static void  insertSort(int[] arr){for (int i = 1; i < arr.length; i++) {int k=arr[i];int j;for ( j= i-1; j >=0; j--) {if(arr[j]>k){arr[j+1]=arr[j];}else{break;}}arr[j+1]=k;}System.out.println(Arrays.toString(arr));}//冒泡排序,不稳定(会改变大部分部分数组数值的位置)(时间最坏复杂度 O(n^2)最优均为O(n))//冒泡排序每次出来一个最值是其核心算法所在public static void bubleSort(int[] arr){for (int i = 1; i < arr.length; i++) {for (int j = 0; j < arr.length-i; j++) {if(arr[j]>arr[j+1]){int max=arr[j];arr[j+1]=arr[j];arr[j]=max;}}}System.out.println(Arrays.toString(arr));}//选择排序,不稳定(会改变大部分数组原本位置的值)(时间最坏最优复杂度均为O(n^2))//选择排序是拿每一个数和其后面所有的数比较public static void selectSort(int[] arr){for (int i = 0; i < arr.length; i++) {for (int j = i+1; j < arr.length; j++) {if(arr[i]>arr[j]){int max=arr[i];arr[i]=arr[j];arr[j]=max;}}}System.out.println(Arrays.toString(arr));}}
打印输出:[1, 2, 3, 4, 8, 9, 9, 10]


阅读全文
0 0
原创粉丝点击