---恢复内容开始---
特点:
第一,和其他某些策略不同,我们可以应用蛮力法来解决广阔领域的各种问题。(应用领域广)
第二,对于一些重要的问题来说(比如:排序、查找、矩阵乘法和字符串匹配),蛮力法可以产生一些合理的算法,它们多少具备上些实用价值,而且并不限制实例的规模。
第三,如果要解决的问题实例不多,而且蛮力法可以用一种能够接受速度对实例求解,那么,设计一个更高效算法所花费的代价很可能是不值得的。(代价相对较小)
第四,即使效率通常很低,仍然可以用蛮力法解决一些小规模的问题实例。(适合小规模)
第五,一个蛮力算法可以为研究或教学目的的服务。
蛮力法实例
一,
基本思路:在未排序的数中找到最小(最大)的数和这些数中的第一个(最后一个)交换。
时间复杂度:O(n^2)
实例代码:
#include <iostream.h> void SelectSort(int* pData,int Count) { int iTemp; int iPos; for(int i=0;i<Count-1;i++) { iTemp = pData[i]; iPos = i; for(int j=i+1;j<Count;j++) { if(pData[j]<iTemp) { iTemp = pData[j]; iPos = j; } } pData[iPos] = pData[i]; pData[i] = iTemp; } } void main() { int data[] = {10,9,8,7,6,5,4}; SelectSort(data,7); for (int i=0;i<7;i++) cout<<data[i]<<" "; cout<<"\n"; }
二,冒泡排序
基本思路:通过相邻比较把较大的数和小的数交换,最后达到最大(最小)的数在最下(上)
实例代码:
1 #include <iostream.h> 2 3 void BubbleSort(int* pData,int Count) 4 { 5 int iTemp; 6 for(int i=1;i<Count;i++) 7 { 8 for(int j=Count-1;j>=i;j--) 9 { 10 if(pData[j]<pData[j-1]) 11 { 12 iTemp = pData[j-1]; 13 pData[j-1] = pData[j]; 14 pData[j] = iTemp; 15 } 16 } 17 } 18 } 19 20 void main() 21 { 22 int data[] = {10,9,8,7,6,5,4}; 23 BubbleSort(data,7); 24 for (int i=0;i<7;i++) 25 cout<<data[i]<<" "; 26 cout<<"\n"; 27 }
---恢复内容结束---
时间: 2024-10-11 00:55:52