c++几种排序算法代码
#include <iostream>
#include <vector>
using namespace std; //交换int
void swap(int& a, int& b){
int temp = a;
a = b;
b = temp;
} //冒泡
void BulletSort(vector<int>& nums){
int n = nums.size();
for (int i = ; i < nums.size()-; i++){
for (int j = ; j < nums.size() - i -; j++){
if (nums[j] > nums[j+]){
swap(nums[j], nums[j+]);
}
}
}
} //快排
void fastSort(vector<int>&num, int first, int last){
if (first < last){
int i = first;
int j = last;
int seed = num[i];
while (i<j){
while (i < j && num[j] >= seed){
j--;
}
if (i < j){
num[i++] = num[j];
}
while (i <j && num[i] <= seed){
i++;
}
if (i < j){
num[j--] = num[i];
}
}
num[i] = seed;
fastSort(num, first, i - );
fastSort(num, i + , last);
} } //插入
void InsertSort(vector<int>& nums){
int n = nums.size();
for (int i = ; i < n; i++){
for (int j = i; j > ; j--){
if (nums[j] < nums[j - ]){
swap(nums[j], nums[j - ]);
}
}
}
} //归并数组
void mergeArray(vector<int>&nums, int first, int mid, int last, vector<int>temp){
int i = first;
int j = mid + ;
int m = mid;
int n = last;
int k = ;
while (i <= m&& j<=n){
if (nums[i] < nums[j]){
temp[k++] = nums[i++];
}
else{
temp[k++] = nums[j++];
}
}
while (i<=m){
temp[k++] = nums[i++];
}
while (j <= n){
temp[k++] = nums[j++];
}
for (int i = ; i < k; i++)
{
nums[first+i] = temp[i];
}
} //归并
void mergeSort(vector<int>& nums, int first, int last, vector<int>temp){
if (first<last){
int mid = (first + last) / ;
mergeSort(nums, first, mid, temp);
mergeSort(nums, mid + , last, temp);
mergeArray(nums,first,mid,last,temp); }
} int main()
{
vector<int>test;
vector<int>temp(, );
test.push_back();
test.push_back();
test.push_back();
test.push_back();
//BulletSort(test);
//fastSort(test, 0, 3);
//InsertSort(test);
//mergeSort(test, 0,3,temp);
return ; } 几种算法的比较如下图所示

c++几种排序算法代码的更多相关文章
- Java 的八种排序算法
Java 的八种排序算法 这个世界,需要遗忘的太多. 背景:工作三年,算法一问三不知. 一.八种排序算法 直接插入排序.希尔排序.简单选择排序.堆排序.冒泡排序.快速排序.归并排序和基数排序. 二.算 ...
- 几种排序算法的学习,利用Python和C实现
之前学过的都忘了,也没好好做过总结,现在总结一下. 时间复杂度和空间复杂度的概念: 1.空间复杂度:是程序运行所以需要的额外消耗存储空间,一般的递归算法就要有o(n)的空间复杂度了,简单说就是递归集算 ...
- 学习Java绝对要懂的,Java编程中最常用的几种排序算法!
今天给大家分享一下Java中几种常见的排序算法的Java代码 推荐一下我的Java学习羊君前616,中959,最后444.把数字串联起来! ,群里有免费的学习视频和项目给大家练手.大神有空时也 ...
- 排序—时间复杂度为O(n2)的三种排序算法
1 如何评价.分析一个排序算法? 很多语言.数据库都已经封装了关于排序算法的实现代码.所以我们学习排序算法目的更多的不是为了去实现这些代码,而是灵活的应用这些算法和解决更为复杂的问题,所以更重要的是学 ...
- java算法03 - 常用的8种排序算法
Java常用的八种排序算法: 插入排序 - 直接插入排序 每次将待排序的记录按照关键字的大小,插入到前面已经排好序的记录的适当位置.直到全部记录插入完成. 代码实现 /** * 直接插入排序 O(n^ ...
- 史上最全单链表的增删改查反转等操作汇总以及5种排序算法(C语言)
目录 1.准备工作 2.创建链表 3.打印链表 4.在元素后面插入元素 5.在元素前面增加元素 6.删除链表元素,要注意删除链表尾还是链表头 7.根据传入的数值查询链表 8.修改链表元素 9.求链表长 ...
- JavaScript实现的7种排序算法
所谓排序算法,即通过特定的算法因式将一组或多组数据按照既定模式进行重新排序.这种新序列遵循着一定的规则,体现出一定的规律,因此,经处理后的数据便于筛选和计算,大大提高了计算效率.对于排序,我们首先要求 ...
- 秒杀9种排序算法(JavaScript版)
一:你必须知道的 1> JS原型 2> 排序中的有序区和无序区 3> 二叉树的基本知识 如果你不知道上面三个东西,还是去复习一下吧,否则,看下面的东西有点吃力. 二:封装丑陋的原型方 ...
- PHP的几种排序算法的比较
这里列出了几种PHP的排序算法的时间比较的结果,,希望对大家有所帮助 /* * php 四种排序算法的时间与内置的sort排序比较 * 3000个元素,四种算法的排序所用的时间比较 * 冒泡排序 85 ...
随机推荐
- iptables 防火墙 只允许某IP访问某端口、访问特定网站
iptables 防火墙 只允许某IP访问某端口.访问特定网站 1.先备份iptables /var/tmp 需要开80端口,指定IP和局域网 下面三行的意思: 先关闭所有的80端口 开启ip段192 ...
- jar 包的认识与处理、jar 文件 war 文件以及 ear 文件
1. jar 包 将 jar 包解压,其实是该类(.java)编译好的(.class)文件. 包路径 package 多层嵌套的 packages META-INF 文件夹 2. 常用 jar 包及其 ...
- javascript系列-class4.函数
欢迎加入前端交流群来py: 转载请标明出处! 在火影的世界中存在忍术,忍术是把强大的能量集中在一起以各种各样不同的形式发射出来.怎样使用各种各样的忍术那?通过结印. ...
- JavaScript中Math常用方法
title: JavaScript中Math常用方法 toc: false date: 2018-10-13 12:19:31 Math.E --2.718281828459045,算数常量e Mat ...
- 深入C#类的方法
构造函数 example1: static void Main(string [] args) { SE engineer=new SE(); engineer.Age=; enginner.Name ...
- (转载)android控件之WebView控件缩小
android控件之WebView控件缩小 作者: 字体:[增加 减小] 类型:转载 时间:2013-05-16我要评论 发现这个控件挺好用,能自已控制进度条,而且这个控件的功能非常壮大,先上个简单的 ...
- ASM磁盘组中的AU与条带
一.AU与条带(AU和条带就是一个分配单位,数据会被以一定单位分割,存储在多个磁盘中.分割单位的大小由AU.条带来决定. ASM有两种条带: 1.不可调粗粒度: 相当于ASM没有条带,或者说AU就是条 ...
- lftp简单使用
连接服务器: lftp -e "参数;" "username":"password"@"ip" -p port lftp ...
- Servicification
Servicification Summary The Chromium codebase now supports many platforms and use cases. In response ...
- [SCOI2012]喵星球上的点名(树状数组+后缀数组)
我们把所有的名,姓,询问都拼起来构成一个新的长串,然后跑一边SA.排完序后对于每一个询问,我们可以二分求出它所对应的区间(即满足这个区间的前缀都是这个询问串).然后问题就转化为很多区间问区间出现过的不 ...