最简单的插入排序:思想,两两之间比较,时间复杂度o(n^2)

void bubblesort(vector<int>&vec, int n)
{
if (&vec==NULL)
return;
int temp;
bool flag;
for (int i = ; i < n - ; i++)//外层循环控制循环次数
{
flag = false;//判断是否有序的标志
for (int j = ; j < n - - i; j++)//内层循环控制边界
{
if (vec[j]>vec[j + ])
{
temp = vec[j];
vec[j] = vec[j + ];
vec[j + ] = temp;
flag = true;
}
}
if (!flag)
break;
} }

2.选择排序,思想:假定每轮循环的第一个元素为最值,然后从后面未排序的元素中挑选出最值,与之交换.

void selectsort(vector<int>&vec, int n)
{
if (&vec == NULL)
return;
int key;
int min;
int temp;
for (int i = ; i < n - ; i++)//外层控制循环次数
{
key = vec[i];
min = i;
for (int j = i + ; j < n; j++)//内层控制循环的边界
{
if (vec[j] < key)
{
min = j;//记录最小值的索引值
key = vec[j];//记录最小值
}
}
if (min != i)//如果有变化,则交换
{
temp = vec[i];
vec[i] = vec[min];
vec[min] = temp;
}
} }

3.插入排序,思想:每次都从未排序的集合中,取一个元素插入到已经排好序的数组中,注意用数组和用vector时判断条件的区别

void insertsort(vector<int>&vec, int n)//这里必须传递引用,因为这是一个类对象,不同于数组
{
if (&vec == NULL)
return;
int key;
for (int i = ; i < n; i++)
{
key = vec[i];//暂存要插入的值
int j = i;//暂存要插入的下标
while (j>&&key < vec[j - ])//注意:换成 while(key<vec[j-1]&&j>0)则报错,而如果是数组则没问题,因为vector检查更严格,更安全,不允许vec[-1]的出现(下标越界).
{
vec[j] = vec[j - ];//依次往后移动一位
j--;
}
if (i!=j)//如果下标有变化,说明插入位置有变,需要重新插入
vec[j] = key;
}
}

C++中的冒泡排序,选择排序,插入排序的更多相关文章

  1. 学习C#之旅 冒泡排序,选择排序,插入排序,希尔排序[资料收集]

    关于冒泡排序,选择排序,插入排序,希尔排序[资料收集]  以下资料来源与网络 冒泡排序:从后到前(或者从前到后)相邻的两个两两进行比较,不满足要求就位置进行交换,一轮下来选择出一个最小(或最大)的放到 ...

  2. python算法(一)基本知识&冒泡排序&选择排序&插入排序

    本节内容: 算法基本知识 冒泡排序 选择排序 插入排序 1. 算法基本知识 1.1 什么是算法? 算法(algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为 ...

  3. java冒泡排序-选择排序-插入排序-使用API中文文档直接调用函数

    import java.util.Arrays; public class ArrayDemo2_3 { public static void main(String []args) { //---- ...

  4. 冒泡排序 & 选择排序 & 插入排序 & 希尔排序 JavaScript 实现

    之前用 JavaScript 写过 快速排序 和 归并排序,本文聊聊四个基础排序算法.(本文默认排序结果都是从小到大) 冒泡排序 冒泡排序每次循环结束会将最大的元素 "冒泡" 到最 ...

  5. 数组排序-冒泡排序-选择排序-插入排序-希尔排序-快速排序-Java实现

    这五种排序算法难度依次增加. 冒泡排序: 第一次将数组相邻两个元素依次比较,然后将大的元素往后移,像冒泡一样,最终最大的元素被移到数组的最末尾. 第二次将数组的前n-1个元素取出,然后相邻两个元素依次 ...

  6. PHP冒泡排序,选择排序,插入排序

    1  冒泡排序是两个元素相互比较,找到最小值,然后冒泡到最后,代码如下:

  7. 算法 排序lowB三人组 冒泡排序 选择排序 插入排序

    参考博客:基于python的七种经典排序算法   [经典排序算法][集锦]     经典排序算法及python实现 首先明确,算法的实质 是 列表排序.具体就是操作的列表,将无序列表变成有序列表! 一 ...

  8. lowB三人组算法-冒泡排序-选择排序-插入排序

    冒泡排序 时间复杂度:O(n2)  算法稳定 第一趟,从第一个数开始,相邻两个数比较,大的数交换放后,交换到最后位置得出一个第一大数 第二趟,从第一个数开始,相邻两个数比较,大的数交换放后,交换到倒数 ...

  9. php基础排序算法 冒泡排序 选择排序 插入排序 归并排序 快速排序

    <?php$arr=array(12,25,56,1,75,13,58,99,22);//冒泡排序function sortnum($arr){    $num=count($arr);    ...

随机推荐

  1. winform分页管理

    注意:其中可能用到部分自定义的扩展方法,在使用中需自己修改一下 /// <summary> /// 分页管理 /// </summary> public class Pagin ...

  2. Sharepoint 2013 安装部署系列篇 第三篇 -- 安装和配置网络负载均衡在前端web服务器

    第一部分 系统集群安装 第二部分 SQL集群安装 第四部分 安装和配置sharepoint 场(三层拓扑部署) 接下来一步一步开始配置NLB吧, 以下开始讲解如何配置NLB集群作为sharepoint ...

  3. asp.net获取select值的方法

    如何使用asp.net获取select值?搜索中发现一个不错的例子,在此与大家分享. 代码: <select runat="server" class="xgxxb ...

  4. 【Cocos2d入门教程四】Cocos2d-x菜单篇

    游戏世界多姿多彩,无论多靓丽的游戏,多耐玩的游戏,在与游戏用户交互上的往往是菜单. 上一章我们已经大概了解了导演.节点.层.精灵.这一章以菜单为主题. 菜单(Menu)包含以下内容: 1.精灵菜单项( ...

  5. Swiper之滑块2

    对比之前Swiper滑块1来说,我们添加一下背景颜色来看看: <!DOCTYPE html> <html> <head> <meta http-equiv=& ...

  6. Javascript之拖拽库

    在手机上运行触屏拖动时,我发现页面并没有反应,服务器端执行javascript在手机端与电脑端不能“相同式”实现(电脑端运行正常,而手机端不一样),这是为甚么呢? 首先,我们都知道javascript ...

  7. 一个WebForm中连接SQL Server的例子

    .cs using System; using System.Collections; using System.ComponentModel; using System.Data; using Sy ...

  8. 20141017--类型String类

    Console.Write("请输入您的身份证号"); string x=Console.ReadLine();//小string是大String的快捷方式 int i = x.L ...

  9. CSS学习备忘

    CSS样式控制行间距,用line-height 测试一下: <div style="line-height:6px"> 111<br> 222<br& ...

  10. linux 信号列表和基本作用

    我们运行如下命令,可看到Linux支持的信号列表: $ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7 ...