蛮力法是什么样的算法?

2025-02-25 02:32:20
推荐回答(2个)
回答1:

《算法设计与分析基础》学习 --- 蛮力法 要重温算法思想,并以《算法设计与分析基础》这本书作为教材。该书每一章介绍一种算法设计思想。今天从最简单的开始写起,打好基础。以后再逐步深入,学习更深入的算法。 蛮力法就是一种解决问题的最简单最直观的最容易理解方法,虽然它简单,而且在实际应用中因为效率的原因可能不能派上用场,但是还是不能忽略它。正如书中作者所说,在解决小规模问题的时候也不失为一个方法,而且也是更复杂算法的基础。 一、选择排序
以最简单的思路解决排序问题,对于N个元素的数组,通过N次扫描数组,每次选择出最小的元素放置到正确的位置,N趟扫描后即完成排序。 show sourceview source print? 01/* 02 蛮力法-选择排序 03 将输入数组排成非递减数组 04 05 array:待排数组 06 n:数组大小,即[0,n-1] 07*/08void SelectionSort(int array[],unsigned int n) 09{ 10 int min; 11 for(int i=0;i这是一个最差的排序方法,对于任何输入都是 O(n*n)的时间复杂度。但是它的最大优点就是交换次数最少。 二、冒泡排序
又是一个经典的蛮力排序算法。这里我仅仅对原始的冒泡做了点点改进,如果算法已经排好序的话该算法扫描一遍便完成排序。
show sourceview source print? 01/* 02 蛮力法-冒泡排序(稍微改进版) 03 将输入数组排成非递减数组 04 05 array:待排数组 06 n:数组大小,即[0,n-1] 07*/08void BubbleSort(int array[],unsigned int n) 09{ 10 int i=n-1; 11 int last; 12 while(i>0) 13 { 14 last = 0; 15 for(int j=0;jarray[j+1]) 18 { 19 int temp = array[j]; 20 array[j] = array[j+1]; 21 array[j+1] = temp; 22 23 last = j; //记录最近一次交换值的位置 24 } 25 } 26 i = last; 27 } 28}//BubbleSort
但是在最差的情况下,它还是O(n*n)的时间复杂度。 三、顺序查找和字符串的蛮力匹配
顺序查找,再简单不过的查找算法了,算是对蛮力思想的一种应用。以及字符串的蛮力匹配也是这样的。

回答2:

1.蛮力法的基本思想蛮力法是一种简单直接地解决问题的方法.2.选择排序问题描述及算法讲解演示;归纳算法时间效率关系式;推导并求解除选择排序的时间效率为Θ(n2)。3.冒泡排序冒泡排序算法讲解演示;归纳算法时间效率关系式;推导并求解除选择排序的时间效率为Θ(n2)4.顺序查找和蛮力字符串匹配查找和字符串匹配问题描述及算法讲解演示;归纳算法时间效率关系式。5.最近对问题最近对问题的描述及模型;最近对问题的蛮力算法及时间效率分析。6.凸包问题凸包的定义及举例及问题的描述;凸包问题的蛮力解决方法及时间效率分析。7.穷举查找旅行商问题、背包问题、分配问题。