蛮力枚举算法C语言,算法01-蛮力法_weixin_39626089的博客-程序员秘密

技术标签: 蛮力枚举算法C语言  

算法01-蛮力法

一、蛮力法介绍

蛮力法(brute force method,也称为穷举法或枚举法)是一种简单直接地解决问题的方法,常常直接基于问题的描述,所以,蛮力法也是最容易应用的方法。但是,用蛮力法设计的算法时间特性往往也是最低的,典型的指数时间算法一般都是通过蛮力搜索而得到的 。

常见的蛮力法:冒泡排序、选择排序。

二、冒泡排序

1、基本思想

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名“冒泡排序”。

它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

冒泡排序是稳定的排序算法,适合少量数据的排序(10张以内),比如炸金花。

2、代码实现

public static > void bubbleSort(E[] arr) {

if (arr == null || arr.length == 0) {

return;

}

//从小到大排序

for (int i = 0; i 

// 判断是否排好序:可能在遍历完之前就已经排好序了

boolean flag = true;

for (int j = 0; j 

E temp = arr[j];

if (arr[j].compareTo(arr[j + 1]) > 0) {

arr[j] = arr[j + 1];

arr[j + 1] = temp;

flag = false;

}

}

if (flag) {

return;

}

}

}

三、选择排序

1、基本思想

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

选择排序是不稳定的排序方法(比如序列[5, 8, 3]第一次就将[5]与[3]交换,导致5挪动到8后面)。选择排序的移动次数较少,适合少量数据的排序(10~20)。

2、代码实现

public static > void selectSort(E[] arr) {

if (arr == null || arr.length == 0) {

return;

}

for (int i = 0; i 

//先找到最值

int index = i;

for (int j = i + 1; j 

E temp = arr[index];

if (temp.compareTo(arr[j]) > 0) {

index = j;

}

}

//然后与最值交换

if (index != i) {

E temp = arr[i];

arr[i] = arr[index];

arr[index] = temp;

}

}

}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39626089/article/details/117239776

智能推荐

基于python技术的自动化运维是干嘛的_如何理解Python与自动化运维的关系。?_weixin_39626211的博客-程序员秘密

一个是目的,一个是工具的关系为了达到某个目的(比如这里的运维自动化),我们可以用不同的手段或者工具(比如这里的python)如果你特别擅长Java、PHP,也可以用Java\PHP来开发相关运维自动化工具然而有很多原因,用Python来实现是显得增加顺利成章,比如社区的各种开源框架,以及运维工程师们普遍不熟悉Java、C++、PHP等应用开发为主的编程语言在大规模使用Python进行平台开发之前,...

tp6 登录验证_tp6登录验证_逸曦穆泽的博客-程序员秘密

中间件命令快速生成:tp6手册指引php think make:middleware Check1、中间件:app/middleware/Checknamespace app\middleware;use think\facade\Session;class Check{ public function handle($request, \Closure $next){ $name = Session::get("lenzePromUser");

好奇怪...._sevendoors的博客-程序员秘密

为什么进不了我的博客呢...?

STL---heap概述,make_heap,sort_heap,pop_heap,push_heap_BIG_GENERAL_DD的博客-程序员秘密

heap并不属于STL容器组件,它分为 max heap 和min heap,在缺省情况下,max-heap是优先队列(priority queue)的底层实现机制。而这个实现机制中的max-heap实际上是以一个vector表现的完全二叉树(complete binary tree)。二叉堆(binary heap)就是i一种完全二叉树。也即是。整棵二叉树除了最底层的叶节点以外,

ESP32引脚参考_esp32引脚定义_SQ-C的博客-程序员秘密

生活感悟一条:你的一切努力,皆因自己而来。

led伏安特性实验误差分析_伏安法测量误差分析-北京新东方_weixin_39947351的博客-程序员秘密

www.gaokao150.com下载更多资料请点击www.gaokao150.com1伏安法测量实验中的误差分析北京新东方学校中学部物理教研组夏梦迪伏安法是高中物理电学实验中的一种非常重要的方法和实验思想。它以欧姆定律为原理,以伏特表(直流电压表)和安培表(直流电流表)为工具,向学生们提供了一种在测量电路中的一些重要电器元件的电学性质时的最为广泛使用、也最为行之有效的方法。同时,在高中电学中以伏...

随便推点

Linux设备树语法详解_linux 修改 动态 修改 设备树 配置 函数_kunkliu的博客-程序员秘密

转载地址:https://www.cnblogs.com/xiaojiang1025/p/6131381.html概念Linux内核从3.x开始引入设备树的概念,用于实现驱动代码与设备信息相分离。在设备树出现以前,所有关于设备的具体信息都要写在驱动里,一旦外围设备变化,驱动代码就要重写。引入了设备树之后,驱动代码只负责处理驱动的逻辑,而关于设备的具体信息存放到设备树文件中,这样,如果只是硬件接口信...

学习方法——TRIZ创新理论中的40个发明原则(一)_YukinoSiro的博客-程序员秘密

1.分割 Division将物体分割成独立的部分 使物体成为可组合的 增加物体被分割的程度 2.抽取 Taking out将物体负面的东西抽取出来 只抽取必要的部分或特性3.局部质量 Local Quality将物体或外部环境的同类结构转换成异类结构 使物体的不同部分实现不同的功能 使物体的每一部分处于最有利于其运行的条件下 4.非对称 Asymme...

AES加密解密(ECB模式,【面试总结】_aes加密算法常见面试问题_m0_64319112的博客-程序员秘密

非对称RSA加密解密:http://blog.csdn.net/huangxiaoguo1/article/details/78043354密码说明严格地说,AES和Rijndael加密法并不完全一样(虽然在实际应用中二者可以互换),因为Rijndael加密法可以支持更大范围的区块和密钥长度:AES的区块长度固定为128比特,密钥长度则可以是128,192或256比特;而Rijndael使用的密钥和区块长度可以是32位的整数倍,以128位为下限,256比特为上限。加密过程中使用的密钥是由Rij

基于Ajax的WebGIS设计与开发论文,基于AJAX技术的WebGIS查询系统的开发_weixin_39632293的博客-程序员秘密

A Development of WebGIS Query Based on AjaxGu Gaoxiang1顾高翔,(1985-),男,硕士研究生,主要研究方向:地理计算1、Key Laboratory of Geographical Information Science, Ministry of State Education of China, East China Normal Univ...

Global Mapper功能2(转载)_weixin_30520015的博客-程序员秘密

Global Mapper功能篇—2·支持CONTOUR GENERATION(轮廓生成)。可以为任何高程数据集添加轮廓,也可自行制定等高间隔。轮廓数据可以任何矢量数据导出。·支持自动三角测量和网格化三维点数据。您可以转换一系列的高程数据至格子数据集。可用于制作轮廓数据、瞄准线分析、视野分析...

MATLAB行向量顺序颠倒函数 - fliplr_matlab 向量顺序颠倒_ddd...e_bug的博客-程序员秘密

fliplr(A)只可用于行向量,列向量不行!实例:(1) 行向量(2) 列向量

推荐文章

热门文章

相关标签