<>插入排序

<>1.直接插入排序

* 时间复杂度:最好O(n) 、最坏O(n2) 、平均O(n2)
* 稳定

public class Main{ public static void main(String[] args) { int[] nums={4,5,8,7
,9,6,3,2,1}; int len=nums.length; int num=-1; for (int i = 1; i <len; i++) {
//先把当前元素给哨兵 num=nums[i]; int j; for (j = i-1;j>=0&&num<nums[j]; j--) { nums[j+1]
=nums[j]; } nums[j+1]=num; } System.out.println(nums); } }
<>2.希尔排序

<>交换排序

<>1. 冒泡排序

* 时间复杂度:最好O(n2)、最坏O(n2)、平均O(n2)
* 稳定
public class Main{ public static void main(String[] args) { int[] nums={4,5,8,7
,9,6,3,2,1}; int len=nums.length; for (int i = 0; i < len - 1; i++) { boolean
flag=false; //表示本次遍历是否发生过交换 for (int j = len-1; j >i; j--) { if(nums[j-1]>nums[j
]){ int temp=nums[j]; nums[j]=nums[j-1]; nums[j-1]=temp; flag=true; } } if(!flag
)break; } System.out.println(nums); //本趟遍历没有发生过交换,说明有序 } }
<>2.快速排序

* 时间复杂度:最好O(n l o g 2 n {log_2{n}} log2​n)、最坏O(n2)、平均O(n l o g 2 n {log_2{n}}
log2​n)
* 空间复杂度:O(n l o g 2 n {log_2{n}} log2​n) 递归用到栈
* 不稳定

* Java代码 public class Main{ public static void main(String[] args) { int[]
nums= {4, 6, 8, 5, 9, 7, 2, 1, 3}; int low=0,high=nums.length-1; QuickSort(nums,
low,high); System.out.println(nums); } //递归 private static void QuickSort(int[]
nums, int low, int high) { if(low>=high)return; //结束条件 if(low<high){ int
pivotpos=Partition(nums,low,high); QuickSort(nums,low,pivotpos-1); QuickSort(
nums,pivotpos+1,high); } } //一次遍历确定一个元素位置 private static int Partition(int[]
nums, int low, int high) { int pivot=nums[low]; while (low<high){ while (low<
high&&nums[high]>=pivot)--high; nums[low]=nums[high]; while (low<high&&nums[low]
<=pivot)++low; nums[high]=nums[low]; } nums[low]=pivot; return low; } }

技术
©2019-2020 Toolsou All rights reserved,
C语言——qsort函数CSS实现溢出显示省略号网络层协议——ICMP协议C语言小游戏-俄罗斯方块Qt入门教程【基础控件篇】QCalendarWidget日历控件用python来控制wifi连接vue中input框只能输入数字Python内置函数C语言数据结构-顺序表删除重复V2.0.0abaqus质量缩放系数取值_ABAQUS的质量缩放