日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

蛮力枚举算法C语言,算法01-蛮力法

發(fā)布時間:2023/12/8 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蛮力枚举算法C语言,算法01-蛮力法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

算法01-蠻力法

一、蠻力法介紹

蠻力法(brute force method,也稱為窮舉法或枚舉法)是一種簡單直接地解決問題的方法,常常直接基于問題的描述,所以,蠻力法也是最容易應(yīng)用的方法。但是,用蠻力法設(shè)計的算法時間特性往往也是最低的,典型的指數(shù)時間算法一般都是通過蠻力搜索而得到的 。

常見的蠻力法:冒泡排序、選擇排序。

二、冒泡排序

1、基本思想

冒泡排序(Bubble Sort),是一種計算機科學領(lǐng)域的較簡單的排序算法。這個算法的名字由來是因為越大的元素會經(jīng)由交換慢慢“浮”到數(shù)列的頂端,故名“冒泡排序”。

它重復(fù)地走訪過要排序的數(shù)列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數(shù)列的工作是重復(fù)地進行直到?jīng)]有再需要交換,也就是說該數(shù)列已經(jīng)排序完成。

冒泡排序是穩(wěn)定的排序算法,適合少量數(shù)據(jù)的排序(10張以內(nèi)),比如炸金花。

2、代碼實現(xiàn)

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

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

return;

}

//從小到大排序

for?(int?i?=?0;?i?

//?判斷是否排好序:可能在遍歷完之前就已經(jīng)排好序了

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)是一種簡單直觀的排序算法。它的工作原理是每一次從待排序的數(shù)據(jù)元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的數(shù)據(jù)元素排完。

選擇排序是不穩(wěn)定的排序方法(比如序列[5, 8, 3]第一次就將[5]與[3]交換,導(dǎo)致5挪動到8后面)。選擇排序的移動次數(shù)較少,適合少量數(shù)據(jù)的排序(10~20)。

2、代碼實現(xiàn)

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;

}

}

}

總結(jié)

以上是生活随笔為你收集整理的蛮力枚举算法C语言,算法01-蛮力法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。