蛮力法查找有序数列c语言,算法——蛮力法之选择排序和冒泡排序c++实现

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

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

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

选择排序法

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

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

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

for    i  

min  

for j 

if A[j]  <  A[min]     min  

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  

for j 

if A[j+1]

swap A[j+1]andA[j]

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

#include

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])即可

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

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&sol;c&plus;&plus; 算法之快速排序法 冒泡排序法,选择排序法,插入排序法

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

基本的排序算法C&plus;&plus;实现&lpar;插入排序,选择排序,冒泡排序,归并排序,快速排序,最大堆排序,希尔排序&rpar;

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

C&num; 冒泡排序法、插入排序法、选择排序法

冒泡排序法 是数组等线性排列的数字从大到小或从小到大排序. 以从小到大排序为例. 数据 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 ...

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

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

随机推荐

UI4&lowbar;UIImageView

// // ViewController.m // UI4_UIImageView // // Created by zhangxueming on 15/7/1. // Copyright (c) ...

一行很好的JS代码

[].forEach.call($$("*"),function(a){ a.style.outline="1px solid #"+(~~(Math.rand ...

android Handler错误,不同的包Handler

1. import java.util.logging.Handler;这个包了会自动生成如下方法.当时还觉得和以前的不一样了,本不在意. Handler handler1= new Handler( ...

markdown与textile之间互相转换

markdown与textile之间互相转换 redmine中默认使用的是textile那么从别的地方复制过来的markdown格式的内容需要进行转换 找到一款工具叫做pandoc http://jo ...

Django-RQ首页、文档和下载 - Django 和 RQ 集成 - 开源中国社区

Django-RQ首页.文档和下载 - Django 和 RQ 集成 - 开源中国社区 Django-RQ 项目实现了 Django 框架和 RQ 消息队列之间的集成.

CSS优先级总结&lpar;转载&rpar;

样式的优先级 多重样式(Multiple Styles):如果外部样式.内部样式和内联样式同时应用于同一个元素,就是使多重样式的情况. 一般情况下,优先级如下: (外部样式)External styl ...

Ubuntu 安装 Docker CE

注:本文转载自 警告:切勿在没有配置 Docker APT 源的情况下直接使用 apt 命令安装 Docker. 准备工作 系统要求 Docker CE 支持以下版本的 ...

Git学习篇之git remote add origin错误

提示出错信息:fatal: remote origin already exists. 解决办法如下: 1.先输入$ git remote rm origin 2.再输入$ git remote ad ...

Enterprise Library

https://msdn.microsoft.com/en-us/library/ff648951.aspx

避免string&period;Format方法的装箱

我们知道,使用string.Format方法可能会存在装箱的情况.比如如下: static void Main(string[] args) { string s = string.Format(&q ...

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值