蛮力法

蛮力法:是一种简单直接地解决问题的方法,常常直接给予问题的描述和所涉及的概念定义。

1.       选择排序

算法:

SelectionSort(Array a)

//该算法用选择排序对给定数组排序

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

//输出:一个已排序数组 A[0,1,….n-1](升序)

for  i <—0 to n-1 do

           min<— i

           for  j <—i to n-1

            if(A[j]<A[min])

                    min=j

           swapA[i] and A[min]

实现:

void selectionSort(double a[],int iLen)

{

     for(int i=0;i<iLen;++i)

     {

         int min=i;

         for(int j=i;j<iLen;++j)

              if(a[j]<a[min])

                   min=j;

         {

              double temp=a[i];

              a[i]=a[min];

              a[min]=temp;

         }

     }

}

2.     冒泡排序

算法:

BubbleSort(Array a)

//该算法用冒泡排序对给定数组排序

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

//输出:一个已排序数组 A[0,…..n-1]

for i<- n-1 to 1

     forj<- 0 to i-1

          ifa[j]>a[j+1]

               swapa[j] and a[j+1]

实现:

void bubleSort(double a[],int iLen)

{

     for(int i=iLen-1;i>0;--i)

     {

         for(int j=0;j<i;++j)

         {

              if(a[j]>a[j+1])

              {

                   double temp=a[j];

                   a[j]=a[j+1];

                   a[j+1]=temp;

              }

         }

     }

}

3.       顺序查找

算法:

seqSearch(Array a, Key k)

//该算法用顺序查找来找出某个键值时候在数组中

//输入:一个n元素的数组a和一个查找键k

//输出:第一个键值等于k的元素的位置,否则返回-1

for i<— 0 to n-1do

           if  a[i]=k

                    returni

return -1

实现:

int seqSearch(inta[],int iLen,int iKey)

{

     for(int i=0;i<iLen;++i)

         if(a[i]==iKey)

              return i;

     return-1;

}

4.     蛮力字符串匹配

算法:

bruteForeStringMatch(Array a , Array b)

//该算法用蛮力法对字符串进行匹配

//输入:一个由n个字符的数组 a[0,….n-1]代表一段文本

       一个有m个字符的数组 b[0,…m-1]代表一个模式

//输出:成功就返回第一个匹配子串的第一个字符的位置,失败返回-1

for i<- 0 to n-1 do

     j<-0

     whilej<m and a[i+j]=b[j] do

          j<-j+1

     ifj=m

          returni

return -1

实现:

int bruteForceStringMatch(char a[],int iLenA,char b[],int iLenB)

{

  for(int i=0;i<iLenA-iLenB;++i)

  {

       int j=0;

       while(j<iLenB&&a[i+j]==b[j])

            ++j;

       if(j==iLenB)

            return i;

  }

  return -1;

}

5.     最近对问题

算法:

bruteForceClosestPoint( P)

//使用蛮力算法求出最近的两个点

//输入:包含n个点的点集P={(x0,y0),(x1,y1)…..(xn-1,yn-1)}

//输出:距离最近的顶点对的索引 index1,index2

dmin<- ∞

index1<- 0

index2<-0

for i<- 0 to n-2 do

     forj<-i+1 to n-1 do

          dTemp<-(xi-xj)^2+(yi-yj)^2

          if(dTemp<dmin)

               dmin<-dTemp

               index1<-i

               index2<-j

return (index1,index2)

6.     凸包问题

算法:

bruteForceOuter(Vertexs)

//使用蛮力法求出凸包的边(顶点对)

//输入:包含n个点的点集V={(x0,y0),(x1,y1)…..(xn-1,yn-1)}

//输出:无(打印出顶点对)

for i<-0 to n-2 do

     forj<-i+1 to n-1 do

          a<-yj-yi

          b<-xi-xj

          c<-xj*yi-xi*yj   //ax+by+c=0

          k<-0

          flag<- 0

          tempFlag<-0

          fork<-0 to n-1 do

               tempFlag<-a*xk+b*yk+c

               ifflag=0 and tempFlag!=0

                   flag<-tempFlag

               elseif flag!=0 and tempFlag!=0

                   flag*tempFlag<0

                        break;

          ifk=n

               print(xi,yi),(xj,yj)

//下面3个问题都可以通过穷举法来解决

7.     旅行商问题

8.     背包问题

9.     分配问题


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Python 的蛮力,也称为暴力,是指通过枚举所有可能的解决方案来解决问题。使用蛮力通常不需要特别的算法知识,但是由于需要枚举所有可能的解决方案,因此其执行速度通常较慢。蛮力通常用于解决小规模问题或作为其他算法的基础。 以下是一个使用 Python 实现的蛮力示例,用于查找一个整数列表中的最大值: ```python def max_num(nums): max_val = float('-inf') for num in nums: if num > max_val: max_val = num return max_val # 示例 nums = [1, 3, 5, 2, 4] print(max_num(nums)) # 输出 5 ``` 在上述示例中,我们通过遍历整数列表 `nums` 来查找最大值。在遍历过程中,我们使用变量 `max_val` 来记录目前为止找到的最大值,并与当前的元素进行比较,如果当前元素比 `max_val` 大,则将 `max_val` 更新为当前元素。最终,函数返回 `max_val`,即为整数列表中的最大值。 ### 回答2: 蛮力(Brute Force)是一种简单却常用的算法思想,也叫暴力搜索。它的基本原理是遍历所有可能的解,逐个进行判断,以找到问题的解。虽然蛮力的效率较低,但在一些问题中,它仍然是一种有效的解决方案。 在Python中,可以使用蛮力解决许多问题。例如,要找到一个列表中的最大数,可以使用蛮力遍历列表的所有元素,并逐个进行比较,最终得到最大的数。 下面是一个简单的用Python实现蛮力找到最大值的例子: ```python def find_max(numbers): if not numbers: # 空列表的情况 return None max_value = numbers[0] # 假设第一个数为最大值 for num in numbers: if num > max_value: # 如果当前数大于最大值 max_value = num # 更新最大值 return max_value ``` 在这个例子中,我们使用一个for循环遍历列表中的每个元素,然后与当前记录的最大值进行比较,如果大于最大值,则更新最大值。 这只是蛮力的一个简单例子,实际应用中可能更复杂。蛮力的优点是简单直观,可以解决许多问题。但它的缺点是效率低下,对于大规模数据或复杂问题,可能需要花费较长的时间。因此,在实际开发中,需要根据具体情况决定是否使用蛮力,或者是否有更有效的算法可供选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值