算法——蛮力法之选择排序和冒泡排序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实现
今天来总结一下常用的内部排序算法.内部排序算法们需要掌握的知识点大概有:算法的原理,算法的编码实现,算法的时空复杂度的计算和记忆,何时出现最差时间复杂度,以及是否稳定,何时不稳定. 首先来总结下常用内 ...
随机推荐
- cassandra.yaml 配置 (非原创,侵删)
Copy from: http://blog.csdn.net/y_h_t/article/details/11917531 Cassandra中所有的运行配置都是在配置文件cassandra.yam ...
- 贴片晶振跟随WIFI渗透到我们的生活之中
在用WIFI上网的时候很多时候会遇到上网速度不是慢就是卡,甚至是连接不上更气人的就是有时候会识别不了.我最常遇到的就是连接不上去,玩着玩着就玩不了了.起初我不知道这是什么原因,但是从事晶振行业之后我慢 ...
- JavaScript Style Guide中文总结
github原址:https://github.com/airbnb/javascript 类型*基本类型:包括string.number.boolean.null.undefined,存储的是值本身 ...
- OWIN 自宿主模式WebApi项目,WebApi层作为单独类库供OWIN调用
OWIN是Open Web Server Interface for .NET的首字母缩写,他的定义如下: OWIN在.NET Web Servers与Web Application之间定义了一套标准 ...
- hdu3715
hdu3715 题意 给出一个递归的伪代码,当 x[a[dep]] + x[b[dep]] != c[dep],就向下递归,给出a,b,c数组的值 问 dep 最大多少.其中 0 <= c[i] ...
- Asp.Net Core轻量级Aop解决方案:AspectCore
什么是AspectCore Project ? AspectCore Project 是适用于Asp.Net Core 平台的轻量级 Aop(Aspect-oriented programming) ...
- 使用React改版网站后的一些感想
文章转载:http://www.jianshu.com/p/8f74cfb146f7 网站是毕业设计的作品,开发这个网站的目的主要用于记录一些笔记,以及聚合一些资讯信息,也算自己在网络世界中的一块静地 ...
- 关于JS跨域问题的解决
这里不提供什么高深的代码了,只说明一个解决跨域问题的方法,个人觉得这个方法是最方便也是最有效的. 那就是一用不同源的JS,虽然JS不允许不同源的访问,但是可以引用不同源的JS,用这样的方法我们可以引用 ...
- PHP漏洞之session会话劫持
本文主要介绍针对PHP网站Session劫持.session劫持是一种比较复杂的攻击方法.大部分互联网上的电脑多存在被攻击的危险.这是一种劫持tcp协议的方法,所以几乎所有的局域网,都存在被劫持可能. ...
- linux系统中的删除操作
#rm [-fir] 文件或者目录 参数: -f:就是force的意思,忽略不存在的文件,不会出现警告信息: -i:互动模式,在删除前会询问用户是否操作: -r:递归删除.最常用的在目录删除.这是一个 ...