Sort Algorithm

sortAlgorithm 系统快排源代码,实现快速排序和插入排序,详见文档 立即下载

1. DirectInsert sort

  直接插入排序,将所要排序的数字放到有序队列中

void DirectInsert(int a[10] , int num){
	int i = 0;
	int j ;
	int temp ;
	for( ; i < num ; i++){
		for( j = i ; j > 0 ; j-- ){
			if(a[j] < a[j-1]){
				temp = a[j-1];
				a[j-1] = a[j];
				a[j] = temp ;
			}
		}
	}
}

2 BiInsert sort

 折半插入排序,使用折半查找法进行插入

void BiInsert(int a[10] , int num){
	  int i , j , low , high , mid , temp;
	  for( i = 1 ; i < num ; i++){
	    low = 0 ; 
		high = i-1 ;
		while(low <= high){
			mid = (low + high)/2;
			if(a[mid] > a[i]){
				high = mid -1 ;
			}
			else{
				low = mid + 1;
			}
		}
		temp = a[i];
		for( j = i-1 ; j >=  high + 1 ; --j){
			a[j+1] = a[j];
		}
		a[high + 1] = temp ;
	  }
}

3. ShellSort

  哈希排序,在一定步长的情况下进行排序,逐渐减小步长,直到步长为1.

void ShellSort(int a[10] ,int  num){
	int dk ;//step length
	int i ;
	int temp ;
	int j ;
	for(dk = num/2 ; dk >= 1 ; dk /= 2){//change the length of the step
		for(i = dk ; i < num  ; i++){//increase the num
			if(a[i] < a[i-dk]){
				temp = a[i];
				for( j = i - dk ; j >= 0 && temp < a[j] ; j -= dk){//find the right location to insert
					a[j + dk] = a[j];
				}
				a[j + dk] = temp ;//the right location to insert
			}
		}
	}
}

4 Bubble Sort

 冒泡排序,最大下沉

void BubbSort(int a[10] , int num) {
	int i , j , temp;
	for(i= 0 ; i < num ; i++){
		for( j = 0 ; j < num - i - 1 ; j++){
			if(a[j] > a[j+1]){
				temp = a[j] ;
				a[j] = a[j+1];
				a[j+1] = temp ;
			}
		}
	}
}

5 QuickSort

   根据一个基点,将大于基点的值放在右边,小于基点的值放在左边

int Partition(int a[10],int low ,int high){
	int pivot = a[low];
	while(low < high){
		while(low < high && a[high] > pivot)
			--high;
		a[low] = a[high];
		while(low < high && a[low] < pivot)
			++low ;
		a[high] = a[low];
	}
	a[low] = pivot;
	return low;
}

void FastSort(int a[10] , int low , int high){
	 if(low < high){
		 int pivotpos = Partition(a , low , high);
		 FastSort(a , low ,pivotpos -1);
		 FastSort(a , pivotpos+1 , high);
	 }
}

6 SelectionSort

 选择未排序中最大的值与当前值对调

void ChooseSort(int a[10] , int num){
	int i , j ,temp , loc ,min ; 
	for( i = 0 ; i < num ; i++){
		min = a[i];
		loc = i;
		for( j = i ; j < num ; j++){
			if(min > a[j]){
				min = a[j];
				loc = j;
			}
		}
		a[loc] = a[i];
		a[i] = min;
	}
}

7 Heapsort

使用最大堆,将每次选出来的最大值放在最后一位。

//the exchange the number from i to the son to choose the big
void Adjustdown(int a[10] , int i , int num){
	int temp = a[i];
	int j ;
	for( j = 2*i +1  ; j < num ; j = j*2 + 1){
		if(j < num && a[j] < a[j+1]){
			j++;
		}
		if(temp >= a[j])break;
		else{
			a[i] = a[j];
			i = j ;
		}
	}
	a[i] = temp;
}
//from the last father to the root to exchange the number
void BuildMaxHeap(int a[10] , int num){
	int i  ;
	for( i = num / 2 ; i >= 0 ; i-- ){
		Adjustdown( a , i ,num);
	}
}
//put the min of the number to the last each time
void HeapSort(int a[10] , int num){
	int temp;
	BuildMaxHeap(a, num);
	for(int m = num-1  ; m >= 0 ; m--){
		temp = a[m];
		a[m] = a[0];
		a[0] = temp;
		Adjustdown(a ,0, m-1);
	}
}
//to insert the numeber and change the order
void Insert(int a[10] , int num , int e){
	int temp = a[num];
	int j , i ;
	for(i = (num -1)/2 , j = num ; i >= 0 ;  ){
		if(temp > a[i]){
			a[j] = a[i];
			j = i ;
			i = (i-1)/2;
		}
		a[i] = temp;
	}
}

 

如何利用PREEvision和MATLAB开发AUTOSAR软件组件 在业界,比较著名的电子电气架构开发工具要属德国Vector公司开发的PREEvision工具了,而MATLAB/Simulink软件是非常高效且实用的基于模型的应用软件开发工具。利用PREEvision与Simulink联合开发AUTOSAR应用软件组件的开发流程有三种,分别是:“自上而下”开发流程(从PREEvision开始),“自下而上”开发流程(从Simulink开始),以及“双向”开发流程。如下图所示,无论哪一种开发流程,PREEvision与Simulink工具都是通过arxml文件进行信息交互的 阅读详情

相关推荐

新手避坑指南:HT7036计量芯片SPI读取电压的完整流程(从复位到校准)

本文详细介绍了HT7036计量芯片的SPI读取电压完整流程,从硬件准备到校准设置,重点解析了复位引脚处理、SPI通信配置、芯片初始化及数据处理等关键步骤。针对常见问题如晶振焊接、SPI时序错误等提供实用解决方案,帮助开发者高效完成电压测量与校准。

weixin_30070339的博客 327

algorithm头文件下的常用函数之sort()

顾名思义,sort()就是用来排序的函数,它根据具体情形使用不同的排序方法,效率较高。一般来说,不推荐使用C语言中的qsort()函数,原因是qsort()用起来比烦琐,涉及很多指针的操作。而且sort()在实现中规避了经典快速排序中可能出现的会导致实际复杂度退化到O(n^2)的极端情况。希望读者能通过这篇介绍来轻松愉快地使用sort函数。 1.如何使用sort()排序 sort()函数的使用...

分享包括但不限于计算机基础知识、数据结构与算法、Golang技术栈。年与时驰,意与日去,遂成枯落,多不接世,悲守穷庐,将复何及! 4390

vue引入使用腾讯地图

// 引入鹅厂地图 initMap(lat = 0.0000000, lng = 0.0000000) { // 定义地图中心点坐标- var center = new TMap.LatLng(lat, lng) // 定义map变量,调用 TMap.Map() 构造函数创建地图 map = new TMap.Map(document.getElementById('txMapBox'), { center: center, // 设.

LiangRZ 4538

排序算法--Sort Algorithm

一、排序算法的概念: 排序也称排序算法 (Sort Algorithm),排序是将一 组数据,依指定的顺序进行排列 的过程 二、排序算法的分类: 1) 内部排序: 指将需要处理的所有数据都加载 到内部存储器中进行排序。 2) 外部排序法: 数据量过大,无法全部加载到内 存中,需要借助外部存储进行 排序 三、算法的时间复杂度 时间频度:一个算法中的语句执行次数称为语句频度或时间频度。记为T(n) 时间复杂度:一般情况下,算法中的基本操作语句的...

YZG ' BLOG 1797

从永恒之蓝看内网安全:企业如何用Nmap+MSF快速检测445端口风险

本文探讨了企业如何利用Nmap和Metasploit快速检测445端口风险,防范永恒之蓝(MS17-010)漏洞攻击。通过分阶段检测流程和自动化工具组合,企业可高效识别内网风险主机,并实施紧急隔离与长效防护策略,提升整体网络安全防护能力。

weixin_30772105的博客 601

深入学习FIFO

深入理解FIFO、同步FIFO和异步FIFO、FIFO设计的难点以及FIFO深度计算

好好学习,天天向上 2651

C++ 实现十大排序算法

教你手撕排序,这里有一个概念就是稳定排序。假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。并不是其算法复杂度的稳定,注意一下 代码均经过测试,如果找到代码bug可以留言 算法(Algo...

weixin_38169798的博客 363

深入理解光流法外推雷达回波

背景介绍 鉴于本人实在太过疲惫和劳累,一些简单的便于理解的废话就不在记录,耗费两天时间研究了一下光流法,本帖用于记录学习过程中源码的难点细节。 使用光流预测的核心有两个利用多张连续回波图像(变分)或者相邻两张回波图(交叉相关,LK等)计算出光流场(速度矢量场),之后利用半拉格朗日方法进行外推。 半拉格朗日方法 三时间步半拉格朗日方法,其核心公式如下 但这个有点难理解,但看一维的图就很好理解 它的核心就是迭代求Am(位移矢量),如果理解困难的话,其实质上就是通过未来迭代(猜)出当前时刻的Am找到过去的假设

weixin_44695861的博客 6035

C++ 头文件 —— algorithm 常用函数及其用法(更新中)

sort 函数是 algorithm 中的排序函数,相较于 C stdlib 中的 qsort 函数,用法更简单,也更广泛,同时内部实现也要更复杂。注意:这里的参数是数组的地址。

qq_72585517的博客 2714

手把手教你学simulink(16.2)--基于Simulink的高通滤波器(High-Pass Filter)项目

基于Simulink的高通滤波器(High-Pass Filter)项目的详细实例介绍。这个项目将重点放在高通滤波器的设计、实现和仿真上,帮助你理解和应用高通滤波器在信号处理中的作用。

MHD0815的博客 927

使用Qt和MX Component插件实现与菱PLC的通信

在本文中,我们介绍了如何使用Qt和MX Component插件实现与菱PLC的通信。我们首先安装和配置了MX Component插件,并在Qt项目中初始化和使用MX Component来连接、读取和写入PLC的数据。安装完成后,您需要在Qt项目中配置MX Component的路径,以便Qt可以找到所需的库文件。在本文中,我们将探讨如何使用Qt和MX Component插件来实现与菱PLC的通信。在主函数中,我们将初始化MX Component,并创建一个与PLC通信的示例。在上面的代码中,我们使用了。

TlScratch的博客 996

Algorithm头文件--sort()函数

在STL标准函数库中提供了一种sort()排序函数,其底层的实现方式是快速排序。该函数的原型:其中的三个参数分别表示:1)start是迭代器的起始地址。2)end是结束的地址(最后一位要排序的地址)。3)cmp是可选参数,用来指定排序的方法,当没有指定时,默认升序。即排序的区间是 [ start,end ) ,排序的方式是默认升序。这里我首先给出两种定义cmp的方法以及传入它们之后得到的结果。//首先第一种{}//然后第二种{}//首先,不带cmp参数,默认升序。

PL_hfc的博客 2257

机器学习笔记:估算模型训练所需的样本量的方法

相反,如果训练得分高而交叉验证得分低,那么模型可能存在过拟合问题,需要更多的样本来提高泛化能力。本文将介绍一些常用的方法来估算模型训练所需的样本量,并提供相应的源代码。除了经验法则和学习曲线法,还有一些统计学方法可以用于估算模型训练所需的样本量。学习曲线是一种通过绘制模型性能与样本量之间的关系曲线来估算样本量的方法。需要注意的是,这些方法仅提供了估算样本量的指导,具体的样本量仍然需要根据实际情况进行调整和优化。通过合理估算样本量,可以提高机器学习模型的性能和泛化能力,从而更好地应用于实际问题中。

HnrzLinux的博客 2734

【C++数据结构算法】排序sort---实用Algorithm函数详解

sort进行排序操作---十分隐蔽的使用规范!!

起床气233的博客 874

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

C++ 标准库 <algorithm> 排序函数 sort

摘要:C++ algorithm库中的sort函数可以通过数组的初始地址和结束地址对数组元素进行自定义排序。

AF_MAX的博客 7496

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C++基础之algorithm库 (sort, unique, reverse)

文章目录前言一、algorithm库简介二、algorithm的重要函数1.sort排序2.reverse逆序3.unique数组去重写在最后 前言 本文章长期更新 以下是正文内容 一、algorithm库简介 暂时先鸽一下 二、algorithm的重要函数 1.sort排序 代码如下:注意第一个参数是起始位置的内存地址位置,第二个参数是参与排序区间结束位置,前闭后开。 sort(a + 1, a + n + 1); 更加自定义的排序:通过构造一个自己的cmp(compare)函数,来对一些自定..

m0_49288319的博客 2301

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

晴问-algorithm头文件之sort函数

【代码】晴问-algorithm头文件之sort函数。

m0_46238930的博客 128

c++ 学习记录 vector容器使用algorithm库的sort() 排序函数

algorithm库的sort() 排序函数的使用方法 参考:C++ STL sort 函数的用法 1、sort函数包含在头文件为#include的c++标准库中 2、sort函数有三个参数: (1)第一个是要排序的数组的起始地址。 (2)第二个是结束的地址(最后一位要排序的地址) (3)第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序。 vector容器获取首地址: 使用 begin()函数 vector容器获取结束地址: 使用 end()函数

然、的博客 870

晴问-algorithm头文件之sort函数III

【代码】晴问-algorithm头文件之sort函数III。

m0_46238930的博客 148

调用c++标准库的algorithm中的sort对vector中的自定义类型进行排序

调用c++标准库的algorithm中的sort对vector中的自定义类型进行排序 #include <iostream> #include <vector> #include <set> #include <tuple> #include <algorithm> #include <random> #include <chrono> using namespace std; class ValueIJ.

love code, love life. 625

C++ algorithm的sort函数总结

sort函数 sort对给定区间进行排序,支持各种数据类型,迭代器,结构体,自定义排序规则 stable_sort 对给定区间进行稳定排序,且可保证相等元素的原本相对次序在排序后保持不变 partial_sort 对给定区间部分元素排序 partial_sort_copy 对给定区间部分元素排序并复制 partition 使得符合某个条件的元素放在前面 stable_partition 相对稳定...

天行健,地势坤 2073

STL中的sort函数和algorithm中的sort函数

笔试阿里的时候搞到我了,一直想着对list用之前的sort排序,结果一直报错。。。 (1)vector的迭代器是随机访问迭代器,支持泛型算法的sort及其算法。可以使用STL中的sort。 //vector排序 #include <iostream> #include <string> #include <vector> #include <algo...

qq_40123329的博客 363

STL Sort Algorithm

这个星期看了侯捷先生《STL 源码剖析》算法部分,基本看完了,其中算法比较多,我就重点下Sort在SGI STL中的实现。 1. sort 函数的实现是这样的: template inline void sort(RandomIAccessIterator first , RandomAccessIterator last> { if ( first != last) {

UPing In The Road 985

algorithm头文件下的sort()

1.简单的sort使用 必须加入头文件#include< algorithm >和using namespace std; 使用如下: sort(首元素地址(必填),尾元素地址的下一个地址(必填),比较函数(选填)); (1)对于整数 #include<iostream> #include<algorithm> using namespace std; int...

Running Snail 2884

[Algorithm] Radix Sort Algorithm

For example we have the array like this: [53, 89, 150, 36, 633, 233] First step is using Counting sort for last digit, in our example is: [53, 89, 150, 36, 633, 233] [3, 9, 0, 6, 3, 3...

weixin_30415113的博客 184

Insertion sort algorithm

Insertion sort is an efficient algorithm for sorting a small number of elements, which costs O(n2).The operation of INSERTION-SORT on the array A = 〈5, 2, 4, 6, 1, 3〉. Array indices appear above the rectangles, and values stored in the array positions

citylove的专栏 949
上一篇: 工厂方法模式
下一篇: Window10 && Ubuntu18.04 双系统安装后,使用EasyBCD 进入Grub 界面 问题解决。
陌逸_逺
博客等级 码龄9年 13粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值