C++实现各种排序以及复杂度,稳定性分析

代码如下:

#include<iostream>
using namespace std;void Bubble_Sort(int *a, int n)
{bool flag;int tmp = 0;for (int i = n - 1; i >= 0; i--){flag = false;for (int j = 0; j < i; j++){if (a[j] > a[j + 1]){swap(a[j], a[j + 1]);flag = true;}}if (!flag) break;}
}int partition(int *a, int low, int high)
{int point = a[low];while (low < high){while (low < high && a[high] >= point){high--;}swap(a[low], a[high]);while (low < high && a[low] <= point){low++;}swap(a[low], a[high]);}return low;
}void quicksort(int *a, int low, int high)
{if (low < high){int point = partition(a, low, high);quicksort(a, low, point - 1);quicksort(a, point + 1, high);}
}void Quick_Sort(int *a, int n)
{quicksort(a, 0, n - 1);
}void Insertion_Sort(int *a, int n)
{int tmp;int j;for (int i = 1; i < n; i++){tmp = a[i];for ( j = i; j > 0 && a[j - 1] > tmp; j--){a[j] = a[j - 1];}a[j] = tmp;}
}void Shell_Sort(int *a, int n)
{int tmp;int j;for (int d = n / 2; d > 0; d /= 2){for (int i = d; i < n; i++){tmp = a[i];for ( j = i; j >= d && a[j - d] > tmp; j -= d){a[j] = a[j - d];}a[j] = tmp;}}
}void merge(int *a, int mid, int low, int high)
{int i = low;int j = mid + 1;int k = 0;int *w = new int[high - low + 1];while (i <= mid && j <= high){if (a[i] < a[j]) w[k++] = a[i++];else w[k++] = a[j++];}while (i <= mid) w[k++] = a[i++];while (j <= high) w[k++] = a[j++];for (int i = low, j = 0; i <= high; i++, j++) a[i] = w[j];delete[] w;
}void mergesort(int *a, int low, int high)
{if (low < high){int mid = (low + high) >> 1;mergesort(a, low, mid);mergesort(a, mid + 1, high);merge(a, mid, low, high);}
}void Merge_Sort(int *a, int n)
{mergesort(a, 0, n - 1);}void Selection_Sort(int *a, int n)
{int min;for (int i = 0; i < n; i++){min = i;for (int j = i + 1; j < n; j++){if (a[j] < a[min])min = j;}if (min != i){swap(a[min], a[i]);}}
}void percDown(int *a,int p,int n)
{int parent, child;int x = a[p];for (parent = p; (parent * 2+1) < n; parent = child){child = 2 * parent+1;if (child != n-1 && a[child] < a[child + 1]){child++;}if (x >= a[child]) break;else a[parent] = a[child];}a[parent] = x;}void Heap_Sort(int *a, int n)
{for (int i = n / 2 - 1; i >= 0; i--){percDown(a, i, n);}for (int i = n - 1; i > 0; i--){swap(a[0], a[i]);percDown(a, 0, i);}
}void printElem(int *a,int n)
{for (int i = 0; i < n; i++){cout << a[i] << " ";}cout << endl;
}void updataElem(int *a, int *b,int n)
{for (int i = 0; i < n; i++){a[i] = b[i];}
}int main()
{int a[] = { 213,432,213,64,5,532,412,3,12412,312 };int b[] = { 213,432,213,64,5,532,412,3,12412,312 };Bubble_Sort(a, 10);//冒泡排序printElem(a,10);updataElem(a, b,10);Quick_Sort(a, 10);//快速排序printElem(a, 10);updataElem(a, b, 10);Insertion_Sort(a, 10);//插入排序printElem(a, 10);updataElem(a, b,10);Shell_Sort(a, 10);//普通希尔排序printElem(a, 10);updataElem(a, b, 10);Merge_Sort(a, 10);//归并排序printElem(a, 10);updataElem(a, b,10);Heap_Sort(a, 10);//堆排序printElem(a, 10);updataElem(a, b, 10);Selection_Sort(a, 10);//选择排序printElem(a, 10);return 0;
}

复杂度以及稳定性分析:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/308900.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Webapi管理和性能测试工具WebBenchmark

WebBenchmark是一款基于开源通讯组件Beetlex扩展的Webapi管理和性能测试工具&#xff0c;在传统工具中一般管理工具缺乏性能压测能力或有性能压测的缺少管理功能&#xff1b;WebBenchmark的设计目标是就管理和性能测试能力同时具备。接下来介绍一下工具的功能和使用&#xff1a…

Abstract Factory(抽象工厂)--对象创建模式

Abstract Factory &#xff08;抽象工厂&#xff09;–对象创建模式 一、意图 提供一个创建一系列相关或者相互依赖的接口&#xff0c;而无需指定它们具体的类。 二、动机 1.在软件系统中&#xff0c;经常面临着“一系列相互依赖的对象”的创建工 作;同时&#xff0c;由于需求…

数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型的概念

数据&#xff1a; 是客观事物的符号表示&#xff0c;指所有能输入到计算机中并被计算机程序处理的符号的总称。如数学计算中用到的整数和实数&#xff0c;文本编辑所用到的字符串&#xff0c;多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。 数据元素&a…

Builder(生成器)--对象创建型模式

Builder&#xff08;生成器&#xff09;–对象创建型模式 一、意图 将一个复杂的对象构建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 二、动机 1.在软件系统中&#xff0c;有时候面临着“一个复杂对象”的创建工作&#xff0c;其通常由各个部分的子对…

Gartner:缺乏技术人才将影响企业数字化转型

导语大多数公司在数字化转型的阶段对所需的技能方面都处于“盲目”状态。正文随着COVID-19响应加快了数字化转型的速度和规模&#xff0c;缺乏数字化技能可能会危害人才计划不统一的公司。甚至在冠状病毒大流行之前&#xff0c;董事会就将数字/技术中断列为2020年的头等大事&am…

DEBUG org.springframework.web.servlet.DispatcherServlet - Error rendering view [org.thymeleaf.spring

报错信息如下: 报错原因: thymeleaf有一些限制&#xff0c;使用th语言&#xff0c;内容为空就会报错 改成这样解决问题:

一文说通Blazor for Server-Side的项目结构

用C#代替Javascript来做Web应用&#xff0c;是有多爽&#xff1f;今天聊聊 Blazor。Blazor 是一个 Web UI 框架。这个框架允许开发者使用 C# 来创建可运行于浏览器的具有完全交互 UI 的 Web 应用。可以理解为&#xff0c;这是一个 C# 语言的 Vue / Angular / React&#xff0c;…

Factory Method(工厂方法)--对象创建型模式

Factory Method&#xff08;工厂方法&#xff09;–对象创建型模式 一、意图 定义一个用于创建对象的接口&#xff0c;让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。 二、动机 1.在软件系统中&#xff0c;经常面临着创建对象的工作;由于需求的变化…

[计组]寄存器和存储器的区别

寄存器存在于CPU中&#xff0c;速度很快&#xff0c;数目有限&#xff1b; 存储器是内存&#xff0c;速度稍慢&#xff0c;但数量很大。 寄存器的功能是存储二进制代码&#xff0c;是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码&#xff0c;故存…

全内存的redis用习惯了?那能突破内存限制类redis产品ssdb呢?

首先说一下背景&#xff0c;在双十一的时候&#xff0c;我们系统接受X宝的订单推送&#xff0c;原先的实现方式是使用 redis 的 List 作为推送数据的承载&#xff0c;在非大促的场景下&#xff0c;一切运行正常&#xff0c;内存占用大概3-4G&#xff0c;机器是16G内存。由于提前…

Prototype(原型)--对象创建模式

Prototype&#xff08;原型&#xff09;–对象创建模式 一、意图 用原型实例指定创建对象的种类&#xff0c;并且通过拷贝这些原型创建新的对象。 二、动机 1.在软件系统中&#xff0c;经常面临着“某些结构复杂的对象”的创建工作&#xff1b;由于需求的变化&#xff0c;这些…

[计组]寄存器的基本含义

寄存器基本含义&#xff1a; 寄存器是CPU内部用来存放数据的一些小型存储区域&#xff0c;用来暂时存放参与运算的数据和运算结果。其实寄存器就是一种常用的时序逻辑电路&#xff0c;但这种时序逻辑电路只包含存储电路。寄存器的存储电路是由锁存器或触发器构成的&#xff0c…

认证授权方案之授权揭秘 (上篇)

一、前言回顾&#xff1a;认证授权方案之授权初识从上一节中&#xff0c;我们在对授权系统已经有了初步的认识和使用&#xff0c;可以发现&#xff0c;asp.net core为我们提供的授权策略是一个非常强大丰富且灵活的认证授权方案&#xff0c;能够满足大部分的授权场景。在Config…

Singleton(单件)--对象创建模式

Singleton&#xff08;单件&#xff09;–对象创建模式 一、意图 保证一个类仅有一个实例&#xff0c;并提供一个访问它的全局访问点。 二、动机 1.在软件系统中&#xff0c;经常有这样一些特殊的类&#xff0c;必须保证它们在系统中只存在一个实例&#xff0c;才能确保它们的…

[计组]断定方式

断定方式: 微地址的形成方法之一。 断定方式&#xff1a;根据机器状态决定下一条微指令的地址&#xff0c;下一条微指令的地址包含在当前微指令的代码中。 这是一种直接给定微地址和测试判定地址相结合的方式。为了实现多路分支&#xff0c;将微地址的若干低位作为可断定的部分…

龙芯团队 在移值 MIPS64 下的.NET Core 进度速报

写在开始前我们的主要业务基于 dotnet core 2.x 与 3.1 完成&#xff0c;目前 dotnet core 3.1 支持的 CPU 架构列表中还不包含龙芯&#xff0c;且在 gitlab issue 中表示官方当前没有对 MIPS 的支持计划。更具体操作系统与 CPU 架构列表见 [Download .NET Core 3.1](https://d…

Adapter(适配器)--类对象结构型模式

Adapter&#xff08;适配器&#xff09;–类对象结构型模式 一、意图 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本接口不兼容而不能一起工作的那些类可以一起工作。 二、动机 1.在软件系统中&#xff0c;由于应用环境的变化&#xff0c;常常需要将“一…

[计组]压缩BCD码指二进制编码的十进制

压缩BCD码指二进制编码的十进制 压缩BCD码指一个字节8位存储2位BCD码。比如32用8421BCD码表示如下&#xff1a;非压缩BCD码表示&#xff1a;00000011 00000010&#xff1b;压缩BCD码表示&#xff1a;0011 0010&#xff1b;使用BCD码表示10进位制数字比较好理解&#xff0c;且占…

如何使用ABP框架(2)三层架构与领域驱动设计的对比

本文来自长沙.NET技术社区&#xff0c;原创&#xff1a;邹溪源。全文共有8500字&#xff0c;读完需耗时10分钟。题图来自pixabay简述上一篇简述了ABP框架中的一些基础理论&#xff0c;包括ABP前后端项目的分层结构&#xff0c;以及后端项目中涉及到的知识点&#xff0c;例如DTO…

Bridge(桥接)--对象结构模式

Bridge&#xff08;桥接&#xff09;–对象结构模式 一、意图 将抽象部分与它的实现部分分离&#xff0c;使它们都可以独立的变化。 二、动机 1.由于某些类型的固有的实现逻辑&#xff0c;使得它们具有两个变化的维度&#xff0c;乃至多个纬度的变化。 2.如何应对这种“多维度…