这次实现的是蛮力法中的两个例子,选择排序法和冒泡排序法,使用的编译环境是vs2013,下面对这两个算法做一个简单介绍,然后是两个算法的c++实现代码。

  选择排序法比较的范围是整个列表,每次扫描结束找出最小的一个元素一次放在前面的位置;而冒泡排序法每次是将相邻两个元素进行比较,将较大的元素放在后面,这样一次扫描结束后就将当前最大的那个元素放在了列表的后面。


  两个排序方法的算法如下:

选择排序法

  SelectionSort(A[0....n-1])

  //输入:一个可排序数组A[0....n-1],

  //输出:升序排序的数组A[0....n-1]

  for    i  <—0  to   n-2   do

    min  <—  i;

    for j <—  i+1  to  n-1    do

      if A[j]  <  A[min]     min  <—j;

        swap A[i] and A[min];

  


  该算法的输入规模就是元素的个数n,基本操作就是if语句中比较的步骤:A[j]  <  A[min],比较的执行次数为:(n-1)n/2,也就是Θ(n2)。


  冒泡排序算法:

  BubbleSort(A[0....n-1])

  //输入:一个可排序数组A[0....n-1]

  //输出:升序排序的数组A[0....n-1]

  for    i  <—0  to   n-2   do

    for j <—  0  to  n-2-i   do

      if A[j+1]<A[j]

        swap A[j+1]andA[j]

该算法的时间复杂度和选择排序的时间复杂度一样都是Θ(n2)。


#include <iostream>
using namespace std;
void SelectionSort(int iSort[], int n);
void BubbleSort(int iSort[], int n);
void swap(int &a, int &b);
//-------------------主函数-------------------
int main(){
int a[];
for (int i = ; i < ; i++){
cin >> a[i];
}
getchar();
//SelectionSort(a, 10);
//这里传递的实参是数组名,
//也就是将地址进行传递,这样被调用的函数就能够改变数组a的值。
BubbleSort(a, );
for (int i = ; i < ; i++){
cout << " " << a[i];
}
getchar();
return ;
}
//-------------------选择排序法-------------------
void SelectionSort(int iSort[],int n){
int i = , j = ,min=;
for (i = ; i < n - ; i++){
min = i;
for (j = i + ; j < n ; j++){
if (iSort[j]<iSort[min]){ //如果要得到降序排列,只要将这里的判断条件改为if (iSort[j]>iSort[min])即可
min = j;
}
}
swap(iSort[i], iSort[min]);
}
}
//-------------------冒泡排序法-------------------
void BubbleSort(int iSort[], int n){
int i = , j = ;
for (i = ; i < n - ; i++){
for (j = ; j < n - - i; j++){
if (iSort[j + ] < iSort[j]){
swap(iSort[j + ], iSort[j]);
}
}
}
}
//-------------------交换元素-------------------
void swap(int &a, int &b){
int temp;
temp = a;
a = b;
b = temp;
}

算法——蛮力法之选择排序和冒泡排序c++实现的更多相关文章

  1. C语言排序算法之简单交换法排序,直接选择排序,冒泡排序

    C语言排序算法之简单交换法排序,直接选择排序,冒泡排序,最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 简单交换法排序 /*简单交换法排序 根据序列中两个记录键值的比较结果来对换这两 ...

  2. Java-数据结构与算法-选择排序与冒泡排序

    Java 选择排序与冒泡排序 1.DataSorter.java public class DataSorter { //冒泡排序法 //主要思路:按升序排序,数组元素两两比较,大的立即排后面 pub ...

  3. java 选择排序与冒泡排序

    选择排序与冒泡排序的特点与区别 ++++++++++++++++++++++++++++++++++++++++++++++ 选择排序 这一种简单的排序方法,它的基本思想是:R[n]第一次从R[0]~ ...

  4. java 选择排序、冒泡排序、折半查找

    public class SortAndSelectDemo{ public static void main(String[] args){ int[] arr = {3, 5, 17, 2, 11 ...

  5. c/c++ 算法之快速排序法 冒泡排序法,选择排序法,插入排序法

    本文详细叙述和实现了快速排序算法,冒泡排序 选择排序 插入排序比较简单,原理在这里不再详述,直接用代码进行了实现. 快速排序法(quicksort)是目前所公认最快的排序方法之一(视解题的对象而定), ...

  6. 基本的排序算法C++实现(插入排序,选择排序,冒泡排序,归并排序,快速排序,最大堆排序,希尔排序)

    博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/8529525.html特别不喜欢那些随便转载别人的原创文章又不给 ...

  7. C# 冒泡排序法、插入排序法、选择排序法

    冒泡排序法 是数组等线性排列的数字从大到小或从小到大排序. 以从小到大排序为例. 数据 11, 35, 39, 30, 7, 36, 22, 13, 1, 38, 26, 18, 12, 5, 45, ...

  8. 关于Java中的选择排序法和冒泡排序法

    一,这种方法是直接传入一个数组进行排序(选择排序法) public static void selectSort(int arr[]){ for (int i = 0; i < arr.leng ...

  9. 常见排序算法总结:插入排序,希尔排序,冒泡排序,快速排序,简单选择排序以及java实现

    今天来总结一下常用的内部排序算法.内部排序算法们需要掌握的知识点大概有:算法的原理,算法的编码实现,算法的时空复杂度的计算和记忆,何时出现最差时间复杂度,以及是否稳定,何时不稳定. 首先来总结下常用内 ...

随机推荐

  1. 开涛spring3(4.4) - 资源 之 4.4 Resource通配符路径

    4.4.1  使用路径通配符加载Resource 前面介绍的资源路径都是非常简单的一个路径匹配一个资源,Spring还提供了一种更强大的Ant模式通配符匹配,从能一个路径匹配一批资源. Ant路径通配 ...

  2. Reinforcement Learning in R

    Reinforcement learning has gained considerable traction as it mines real experiences with the help o ...

  3. git底层原理(一)

    1.git仓库的初始化: 输入git init指令,会看到在当前空目录下创建了一个.git隐藏文件夹,这个就是git实现一切版本管理的关键.进入到.git目录下,里面包含三个文件(config/des ...

  4. js的event事件

    一 .  焦点:使浏览器能够区分区分用户输入的对象,当一个元素有焦点的时候,那么他就可以接收用户的输入. 我们可以通过一些方式给元素设置焦点 1.点击 2.tab   3.js 不是所有元素都能够接受 ...

  5. D. Powerful array

    D. Powerful array 题意 给定一个数列:a[i] (1<= i <= n) K[j]表示 在区间 [l,r]中j出现的次数.有t个查询,每个查询l,r,对区间内所有a[i] ...

  6. 数据库MySQL纯净卸载

    有些人在安装MySQL后,卸载后再次安装时,一直安装不上去,到最后不得不重装系统来安装MySQL.这里教大家如何将MySQL卸载干净,不影响下次安装. 卸载过程 1.停止mysql服务 2.进行卸载 ...

  7. asp.net MVC 网站图片防盗链的几种方法

    目录 1. 通过 URL Rewrite Module 组件 2. 通过 nginx 图片防盗链 3.自定义 HttpHandler 处理 4. 通过 MVC 自定义路由规则防盗链 5. 通过 MVC ...

  8. 16.3Sum Closet

    思路: 暴力,复杂度为 \(O(n^3)\),超时 class Solution { public: int threeSumClosest(vector<int>& nums, ...

  9. 我们为什么要使用AOP?

    原文地址http://www.cnblogs.com/xrq730/p/7003082.html,转载请注明出处,谢谢 前言 一年半前写了一篇文章Spring3:AOP,是当时学习如何使用Spring ...

  10. document事件及例子

    一.关于鼠标事件:onclick:鼠标单击触发 ondbclick:鼠标双击触发 onmouseover:鼠标移上触发 onmouseout:鼠标离开触发 onmousemove:鼠标移动触发 二.关 ...