选择、插入、冒泡排序

选择、插入、冒泡三种算是最典型的排序算法了,空间复杂度都为O(1)

选择排序时间复杂度跟初始数据顺序无关,O(n2),而且还不稳定;

插入排序时间复杂度跟初始数据顺序有关最好O(n),最坏O(n2),稳定

冒泡排序时间复杂度跟初始数据顺序有关最好O(n),最坏O(n2),稳定

三种算法中对于大量随机数,所需时间插入<选择<冒泡。

// MySort.h: interface for the MySort class.
#include "iostream.h"template<class T>
void swap(T &a,T &b)
{T c=a;a=b;b=c;
}template<class T>
void print(T a[], int n ,int i){  cout<<""<<i+1 <<"趟 : ";  for(int j= 0; j<10; j++){  cout<<a[j] <<"  ";  }  cout<<endl;  
}  template<class T>
void selectSort(T a[],int n)  //选择排序
{int i,j,k;for(i=0;i<n-1;++i){k=i;for(j=i+1;j<n;++j){if(a[j]<a[k])k=j;}if(k!=i)swap(a[i],a[k]);        }
}template<class T>
void selectSort2(T a[],int n)  //二元选择排序
{int i,j,min,max;for (i=1;i <= n/2;++i)    // 做不超过n/2趟选择排序 
    {    min = i; max = i ; //分别记录最大和最小关键字记录位置  for (j= i; j<=n-i; ++j) {  if (a[j] > a[max]) {   max = j ; continue ;   }    if (a[j]< a[min]) min = j ;   }    //该交换操作还可分情况讨论以提高效率  swap(a[i-1],a[min]);if(max!=i)swap(a[n-i],a[max]);#ifdef _DEBUGprint(a,n,i-1);
#endif}   
}template<class T>
void insertSort(T a[],int n)  //插入排序
{int i;for(i=1;i<n;++i){if(a[i]<a[i-1]){int j= i-1; T x = a[i];         //复制为哨兵,即存储待排序元素 a[i] = a[i-1];      //先后移一个元素while(j>=0 && x<a[j])     //查找在有序表的插入位置  
            {   a[j+1] = a[j];  //元素后移 j--;            }  a[j+1] = x;        //插入到正确位置  
        } }}
template<class T>
void bubbleSort(T a[],int n)  //冒泡排序
{
/*
int i,j;
for(i=0; i<n-1; ++i) {  
for(j=0; j<n-i-1; ++j) {  
if(a[j] > a[j+1])  
{  
swap(a[j],a[j+1]); 
}  
}  
#ifdef _DEBUG
print(a,n,i);
#endif
} */bool bSwaped = true;int i,j;int lastSwapPos, lastSwapPos_temp = 0; for(i=0; i<n-1; ++i) {  bSwaped = false;  lastSwapPos = lastSwapPos_temp; for(j=n-1; j>lastSwapPos; j--) {  if(a[j-1] > a[j])  {  swap(a[j],a[j-1]); bSwaped = true;  lastSwapPos_temp = j - 1;  }  }         // 如果上一次扫描没有发生交换,则说明数组已经全部有序,退出循环  if(!bSwaped)break;} }

 

转载于:https://www.cnblogs.com/nkzhangkun/p/3990923.html

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

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

相关文章

89页PPT揭秘:人工智能产业爆发的拐点

来源&#xff1a;wpr摘要&#xff1a;如今&#xff0c;人工智能正在以前所未有的速度发展。目前&#xff0c;全球顶尖的IT和互联网公司都加大了对人工智能领域的投入&#xff0c;包括Google、Facebook、微软投入巨大&#xff0c;人工智能进入爆发式增长的拐点。这份关于人工智能…

Linux下如何进行FTP设置

1. 先用rpm -qa| grep vsftpd命令检查是否已经安装&#xff0c;如果ftp没有安装&#xff0c;使用yum -y install vsftpd 安装,(ubuntu 下使用apt-get install vsftpd) 2. service vsftpd start 启动要让FTP每次开机自动启动&#xff0c;运行命令: chkconfig --level 35 vsft…

Python文件拷贝函数

test.txt文件内容如下&#xff1a; one two three four five 代码的功能为把test.txt内容拷贝到copy.txt文件中代码如下&#xff1a; def main():infile open("test.txt", "r")outfile open("copy.txt", "w")countLines countChars…

source insight常用命令--实际使用中比较常用的

以下命令指示个人在实际的使用中比较常用到的相关命令&#xff0c;仅供参考&#xff0c;谢谢合作 ctrlf&#xff1a;搜索关键字 F3&#xff1a;在当前打开的文本中&#xff0c;向上搜索关键字 F4&#xff1a;在当前打开的文本中&#xff0c;向下搜索关键字 ctrlo&#xff1a;快…

医疗健康大数据:应用实例与系统分析

来源&#xff1a;网络大数据1 、概述随着信息技术和物联网技术的发展、个人电脑和智能手机的普及以及社交网络的兴起&#xff0c;人类活动产生的数据正以惊人的速度增长。根据国际数据公司(International DataCorporation&#xff0c;IDC)的报告&#xff0c;仅2011年&#xff0…

RANSAC算法的简单理解

图像拼接中看到了特征匹配的部分&#xff0c;特征匹配主要是特征点的匹配。在特征点匹配的时候&#xff0c;首先进行粗匹配&#xff0c;粗匹配通常是进行一对匹配点进行对比&#xff0c;误差越小越可能是一对匹配点&#xff1b;精匹配方法中&#xff0c;我们可以用到RANSAC(Ran…

IEEE论文:城市大脑,基于互联网大脑模型的智慧城市建设

作者&#xff1a;刘锋 互联网进化论作者 计算机博士前言&#xff1a;基于互联网大脑模型与智慧城市建设的结合&#xff0c;2015年2月在csdn第一次发布文章《基于互联网大脑架构的智慧城市建设探讨》提出了城市大脑的建设方向&#xff0c;地址&#xff1a;https://blog.csdn.net…

vb6 枚举对象属性

Option Explicit引用Library TLIC:\WINDOWS\system32\TLBINF32.DLLTypeLib InformationPrivate Sub Form_Load()Dim oTLB As InterfaceInfo, I As LongSet oTLB TLI.InterfaceInfoFromObject(Me)Debug.Print oTLB.NameFor I 1 To oTLB.Members.CountSelect Case oTLB.Members…

Python利用turtle绘制五角星

绘制用到的参数我们存放在data.txt文件中&#xff0c;data.txt文件内容如下&#xff1a; 300,0,144,1,0,0 300,0,144,0,1,0 300,0,144,0,0,1 300,0,144,1,1,0 300,0,108,0,1,1 184,0,72,1,0,1 184,0,72,0,0,0 184,0,72,0,0,0 184,0,72,0,0,0Python代码如下&#xff1a; # data.…

关于c#静态构造函数

http://baike.baidu.com/view/2634573.htm?fraladdin 在百科上看到C#的新特性静态构造函数&#xff0c;其中提到静态构造函数“不能继承” 今天做了个试验&#xff0c;发现实际上静态构造函数是可以继承的&#xff0c;代码如下&#xff1a; using System; using System.Collec…

Python语言数据类型-----数字和字符串

Python语言的数字类型 整数类型 浮点数类型 复数类型 整数类型与数学中的整数类型概念一致&#xff0c;没有取值范围。 十进制数为 1010,99,-217 十六进制为 0x9a, -0x89 (0x,0X开头表示16进制数) 二进制为 0b010, -0B101(0b,0B开头的表示二进制数) 八进制为 0o123, -0O456(…

深度观察|工业物联网的应用场景和市场潜力

来源&#xff1a;readwrite编译&#xff1a;郭仁贤从人力资源到数字技术&#xff0c;物联网&#xff08;IoT&#xff09;改变了我们与周围世界互动的方式。在每一次的挑战和新的风险中&#xff0c;我们生活中最个人化的领域也迎来了新的机遇。物联网数字产业真正颠覆的是农业、…

scrapy 工作流程

Scrapy的整个数据处理流程由Scrapy引擎进行控制&#xff0c;其主要的运行方式为&#xff1a; 引擎打开一个域名&#xff0c;蜘蛛处理这个域名&#xff0c;然后获取第一个待爬取的URL。引擎从蜘蛛那获取第一个需要爬取的URL&#xff0c;然后作为请求在调度中进行调度。引擎从调度…

Python数据类型-----列表

Python中列表类型 列表是有序的元素集合。 列表中的元素可以通过索引进行访问列表中的每个元素类型可以是不一样的列表的大小没有限制&#xff0c;随时可以修改 列表的操作 序列操作符操纵符含义< seq >< seq >连接两个序列< seq >*<整数类型>对序…

观五官知罕见病,AI“望诊”靠谱吗

新型人脸识别软件可助力罕见病诊断来源&#xff1a;中国科学报将人工智能&#xff08;AI&#xff09;用于医疗辅助诊断早已经不是什么新鲜事&#xff0c;仅AI医学影像辅助诊疗一项就有非常多的应用场景。然而&#xff0c;近日来自美国波士顿一家名为FDNA的数字医疗公司的研究人…

Python数据类型-元组类型

Python的元组类型 tuple 元组特点 元组中的元素可以是不同类型元组中的各个元素存在先后关系&#xff0c;可以通过索引访问元组中元素元组定义后内部的元素不能更改&#xff0c;也不能删除&#xff0c;但是可以给元组添加元素与字符串类型类似&#xff0c;可以通过索引区间来…

持续集成:CruiseControl.NET + VisualSVN.Server

刚换了工作&#xff0c;有需要搭建一套持续集成的平台&#xff0c;做一下总结。 首先是我用到的工具&#xff1a; 上面缺少了Microsoft Fxcop&#xff0c;可以用来做代码校验&#xff0c;不过实际情况暂时还没有用到。主要的需求目前是&#xff0c;使用已发布的稳定版本代码作为…

学会动态丨中国人工智能学会重磅发布《2018人工智能产业创新评估白皮书》

来源&#xff1a;中国人工智能学会摘要&#xff1a;《2018人工智能产业创新评估白皮书》由中国人工智能学会、国家工信安全中心、华夏幸福产业研究院、思保环球联合发布。白皮书聚焦人工智能的使能技术与应用场景两个层面&#xff0c;基于论文、专利、人才、行业壁垒等多个维度…

图像的几种变换简单介绍

刚体变换 平移旋转 保持欧式距离的变换&#xff0c;这意味着图像只进行2D平移和2D旋转运动。它只有3个自由度。 相似变换 平移旋转缩放 相比刚体变换增加了均匀的缩放。均匀的意思是各个方向的缩放比例相同。尺度变换增加了一个自由度&#xff0c;所以自由度为4。和刚体一…

《C语言编写 学生成绩管理系统》

/* (程序头部凝视開始) * 程序的版权和版本号声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名&#xff1a; 学生成绩管理系统 * 作 者&#xff1a; 刘江波 * 完毕日期&#xff1a; 2012 年 6 月 23 日 * 版 本 号&#xff1a; v.62…