算法——蛮力法之选择排序和冒泡排序c++实现
这次实现的是蛮力法中的两个例子,选择排序法和冒泡排序法,使用的编译环境是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++实现的更多相关文章
- C语言排序算法之简单交换法排序,直接选择排序,冒泡排序
C语言排序算法之简单交换法排序,直接选择排序,冒泡排序,最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 简单交换法排序 /*简单交换法排序 根据序列中两个记录键值的比较结果来对换这两 ...
- Java-数据结构与算法-选择排序与冒泡排序
Java 选择排序与冒泡排序 1.DataSorter.java public class DataSorter { //冒泡排序法 //主要思路:按升序排序,数组元素两两比较,大的立即排后面 pub ...
- java 选择排序与冒泡排序
选择排序与冒泡排序的特点与区别 ++++++++++++++++++++++++++++++++++++++++++++++ 选择排序 这一种简单的排序方法,它的基本思想是:R[n]第一次从R[0]~ ...
- java 选择排序、冒泡排序、折半查找
public class SortAndSelectDemo{ public static void main(String[] args){ int[] arr = {3, 5, 17, 2, 11 ...
- c/c++ 算法之快速排序法 冒泡排序法,选择排序法,插入排序法
本文详细叙述和实现了快速排序算法,冒泡排序 选择排序 插入排序比较简单,原理在这里不再详述,直接用代码进行了实现. 快速排序法(quicksort)是目前所公认最快的排序方法之一(视解题的对象而定), ...
- 基本的排序算法C++实现(插入排序,选择排序,冒泡排序,归并排序,快速排序,最大堆排序,希尔排序)
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/8529525.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- C# 冒泡排序法、插入排序法、选择排序法
冒泡排序法 是数组等线性排列的数字从大到小或从小到大排序. 以从小到大排序为例. 数据 11, 35, 39, 30, 7, 36, 22, 13, 1, 38, 26, 18, 12, 5, 45, ...
- 关于Java中的选择排序法和冒泡排序法
一,这种方法是直接传入一个数组进行排序(选择排序法) public static void selectSort(int arr[]){ for (int i = 0; i < arr.leng ...
- 常见排序算法总结:插入排序,希尔排序,冒泡排序,快速排序,简单选择排序以及java实现
今天来总结一下常用的内部排序算法.内部排序算法们需要掌握的知识点大概有:算法的原理,算法的编码实现,算法的时空复杂度的计算和记忆,何时出现最差时间复杂度,以及是否稳定,何时不稳定. 首先来总结下常用内 ...
随机推荐
- 模板类的约束模板友元函数:template friend functions
本来这篇博客是不打算写的,内容不是很难,对于我自己来讲,更多的是为了突出细节. 所谓template friend functions,就是使友元函数本身成为模板.基本步骤:1,在类定义的前面声明每个 ...
- Swift 入门之简单语法(二)
可选项判断 由于可选项的内容可能为 nil,而一旦为 nil 则不允许参与计算 因此使用中,经常需要判断可选项的内容是否为 nil 单个可选项判断 let url = NSURL(string: &q ...
- API文档工具-Swagger的集成
最近安装了API文档工具swagger,因为Github上已有详细安装教程,且安装过程中没有碰到大的阻碍,所以此文仅对这次安装做一份大致记录 相关网站 Swagger 官方地址: http://swa ...
- 自研框架wap.js实践
示例 使用分为3个步骤: 1, 配置模板渲染中心,方便别人可以看到你的模板渲染,请求是什么关系,复杂度怎样 2, 配置事件分发中心 方便观察事件分发,事件复杂度 3,写对应的请求方法.渲染方法. ...
- 一篇%3CDIV%20style%3D%22FONT-SIZE%
%3CDIV%20style%3D%22FONT-SIZE%3A%2016px%22%3E1%EF%BC%8C%E6%88%91%E4%BB%A5%E4%B8%BA%E7%BB%88%E6%9C%89 ...
- 学习Spark——那些让你精疲力尽的坑
这一个月我都干了些什么-- 工作上,还是一如既往的写bug并不亦乐乎的修bug.学习上,最近看了一些非专业书籍,时常在公众号(JackieZheng)上写点小感悟,我刚稍稍瞄了下,最近五篇居然都跟技术 ...
- 【2017-06-06】Ajax完整结构、三级联动的制作
一.Ajax完整结构 $.ajax({ url:"Main.ashx", data:{}, dataType:"json", type:"post&q ...
- 基于TF-IDF的新闻标签提取
基于TF-IDF的新闻标签提取 1. 新闻标签 新闻标签是一条新闻的关键字,可以由编辑上传,或者通过机器提取.新闻标签的提取主要用于推荐系统中,所以,提取的准确性影响推荐系统的有效性.同时,对于将标签 ...
- java基础(一章)
java基础(一章) 1. java是一种面向对象的高级编程语言. 2. java包括: javase(java基础) ...
- Python中如何调用Linux命令
一.使用os模块 In [1]: import os #导入os模块 In [2]: os.system('ls') anaconda-ks.cfg epel-release-7-5.noarch.r ...