排序算法的复杂度、稳定性与代码实现
发布日期:2021-06-27 04:25:03 浏览次数:5 分类:技术文章

本文共 4070 字,大约阅读时间需要 13 分钟。

算法复杂度与稳定性

在这里插入图片描述

相应Code

package SortTest;import java.util.Arrays;import java.util.PriorityQueue;public class SortTest {
static PriorityQueue
maxQueue; static PriorityQueue
minQueue; public static void main(String[] args) {
int[] nums = {
1,3,2,9,6,5,3,2}; int N = nums.length; //直接插入排序 int[] InsertNums = new int[N]; System.arraycopy(nums, 0, InsertNums, 0, N); InsertSort(InsertNums, N); System.out.print("直接插入排序之前:" + Arrays.toString(nums)); System.out.println("直接插入排序结果:" + Arrays.toString(InsertNums)); //希尔排序 int[] ShellNums = new int[N]; System.arraycopy(nums,0,ShellNums,0,N); ShellSort(ShellNums,N); System.out.print("希尔排序之前:" + Arrays.toString(nums)); System.out.println("希尔排序结果:" + Arrays.toString(ShellNums)); //冒泡排序 int[] BubbleNums = new int[N]; System.arraycopy(nums,0,BubbleNums,0,N); BubbleSort(BubbleNums, N); System.out.print("冒泡排序之前:" + Arrays.toString(nums)); System.out.println("冒泡排序结果:" + Arrays.toString(BubbleNums)); //快速排序 int[] QuickNums = new int[N]; System.arraycopy(nums, 0, QuickNums, 0, N); QuickSort(QuickNums, 0, N-1); System.out.print("快速排序之前:" + Arrays.toString(nums)); System.out.println("快速排序结果:" + Arrays.toString(QuickNums)); //归并排序 int[] MergeNums = new int[N]; System.arraycopy(nums, 0, MergeNums, 0, N); int[] temp = new int[N]; MergeSort(MergeNums, 0, N-1, temp); System.out.print("归并排序之前:" + Arrays.toString(nums)); System.out.println("归并排序结果:" + Arrays.toString(MergeNums)); //直接选择排序 int[] SelectNums = new int[N]; System.arraycopy(nums, 0, SelectNums, 0, N); SelectSort(SelectNums, N); System.out.print("直接选择排序之前:" + Arrays.toString(nums)); System.out.println("直接选择排序结果:" + Arrays.toString(MergeNums)); //堆排序 int[] HeapNums = new int[N]; System.arraycopy(nums, 0, HeapNums, 0, N); HeapSort(HeapNums, N); System.out.print("堆排序之前:" + Arrays.toString(nums)); System.out.println("堆排序结果:" + maxQueue); } public static void InsertSort(int[] InsertNums,int N) {
int i,j,k; for(i=1;i
=0;j--) {
if(InsertNums[j] <= InsertNums[i]) break; } if(j != i-1) {
int temp = InsertNums[i]; for(k=i-1;k>j;k--) {
InsertNums[k+1] = InsertNums[k]; } InsertNums[k+1] = temp; } } } public static void ShellSort(int[] ShellNums,int N) {
int gap = N / 2,i,j; while(gap > 0) {
for(i=gap;i
=0;j-=gap) {
if(ShellNums[j+gap] < ShellNums[j]) {
int temp = ShellNums[j+gap]; ShellNums[j+gap] = ShellNums[j]; ShellNums[j] = temp; } } } gap /= 2; } } public static void BubbleSort(int[] BubbleNums,int N) {
int i,j; for(i=0;i
BubbleNums[j]) {
int temp = BubbleNums[j]; BubbleNums[j] = BubbleNums[j-1]; BubbleNums[j-1] = temp; } } } } public static void QuickSort(int[] QuickNums,int start,int end) {
if(start > end) return; int ken = QuickNums[start]; int i=start,j=end; while(i < j) {
while(i < j && QuickNums[j] > ken) {
j--; } if(i < j) {
QuickNums[i] = QuickNums[j]; i++; } while(i < j && QuickNums[i] < ken) {
i++; } if(i < j) {
QuickNums[j] = QuickNums[i]; j--; } } QuickNums[i] = ken; QuickSort(QuickNums, start, i-1); QuickSort(QuickNums, i+1, end); } public static void MergeSort(int[] MergeNums,int start,int end,int [] temp) {
if(start < end) {
int mid = start + (end - start) / 2; MergeSort(MergeNums, start, mid, temp); MergeSort(MergeNums, mid+1, end, temp); MergeArray(MergeNums, start, mid, mid+1, end, temp); } } public static void MergeArray(int[] MergeNums,int left,int leftEnd,int right,int rightEnd,int[] temp) {
int i = left,j = right; int k = 0; while(i <= leftEnd && j <= rightEnd) {
if(MergeNums[i] <= MergeNums[j]) {
temp[k++] = MergeNums[i++]; }else {
temp[k++] = MergeNums[j++]; } } while(i <= leftEnd) temp[k++] = MergeNums[i++]; while(j <= rightEnd) temp[k++] = MergeNums[j++]; for(int m=0;m
();// for(int i=0;i
((a,b)->(b-a)); for(int i=0;i

转载地址:https://blog.csdn.net/weixin_42166320/article/details/107364542 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:SpringBoot2.x 自定义返回全局错误页面
下一篇:怎么在html标签上写属性吗,html中的一些标签与属性使用

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年03月22日 07时16分06秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

wget linux java 32_通过wget在Linux上下载Java JDK会显示在许可证页面上 2019-04-21
babylonjs 设置面板位置_babylonjs 空间坐标转为屏幕坐标 2019-04-21
oracle里面如何查询sqlid,CSS_oracle中如何查看sql, --查询表状态:  select uo.O - phpStudy... 2019-04-21
oracle 查询中用case,oracle case when 在查询时候的用法。 2019-04-21
oracle正在运行的程序包,ORACLE PL/SQL编程详解之程序包的创建与应用 2019-04-21
php局部页面滚动,在访问另一页面后保留浏览器滚动位置 - php 2019-04-21
jmeter运行linux命令行,Jmeter在linux上运行(命令行运行Jmeter) 2019-04-21
linux服务器怎么添加站点,如何增加站点或虚拟主机及文件说明 2019-04-21
linux系统输入指令,Linux系统基础 - 基本操作命令 2019-04-21
linux设备管理命令,Linux命令(设备管理).doc 2019-04-21
linux 中文utf-8转gbk编码,Linux平台下 GBK编码转UTF-8编码 2019-04-21
linux安装软件在boot,在Linux系统上安装Spring boot应用的教程详解 2019-04-21
linux进入用户user1主目录,Linux系统命令提示符为[user1@localhost root]当前用户所在目录为( )... 2019-04-21
取消linux自动登录,linuxdeepin 如何取消自动登录啊? 2019-04-21
linux线程存储,Linux系统编程手册:线程:线程安全和每线程存储 2019-04-21
c语言编程max,C语言编程题及答案.doc 2019-04-21
android测试页面,自动执行界面测试 | Android 开发者 | Android Developers 2019-04-21
android 图片点击变色,Android开发实现ListView点击item改变颜色功能示例 2019-04-21
android增删改查布局,Android之父_增删改查 2019-04-21
电脑端的mafsvr服务关掉_网吧才是电脑优化的精髓!学会3招你也不用羡慕网吧的流畅了... 2019-04-21