www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > > 充電吧
[導(dǎo)讀]交換排序:1)冒泡排序(最簡單最容易理解的排序算法)/** ? * 冒泡法排序 ? *比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。*對每一對相鄰元素作同樣的工作,從開始第一對到結(jié)尾的最

交換排序:

1)冒泡排序(最簡單最容易理解的排序算法)


/** ?
 * 冒泡法排序
? *

比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。

*

對每一對相鄰元素作同樣的工作,從開始第一對到結(jié)尾的最后一對。在這一點,最后的元素應(yīng)該會是最大的數(shù)。

*

針對所有的元素重復(fù)以上的步驟,除了最后一個。

*

持續(xù)每次對越來越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對數(shù)字需要比較。

* ? * @param numbers ? * ? ? ? ? ? ?需要排序的整型數(shù)組 ? */ ? public static void bubbleSort(int[] numbers) { ? ? ?int temp; // 記錄臨時中間值 ? ? ?int size = numbers.length; // 數(shù)組大小 ? ? ?for (int i = 0; i < size - 1; i++) { ? ? ? ? ?for (int j = i + 1; j < size; j++) { ? ? ? ? ? ? ?if (numbers[i] < numbers[j]) { // 交換兩數(shù)的位置 ? ? ? ? ? ? ? ? ?temp = numbers[i]; ? ? ? ? ? ? ? ? ?numbers[i] = numbers[j]; ? ? ? ? ? ? ? ? ?numbers[j] = temp; ? ? ? ? ? ? ?} ? ? ? ? ?} ? ? ?} ? }

2)快速排序

算法思想:通過一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按此方法對這兩部分數(shù)據(jù)分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數(shù)據(jù)變成有序序列。


/** ?
 * 快速排序
? *

*

從數(shù)列中挑出一個元素,稱為“基準”

*

重新排序數(shù)列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的后面(相同的數(shù)可以到任一邊)。在這個分割之后, ? * 該基準是它的最后位置。這個稱為分割(partition)操作。

*

遞歸地把小于基準值元素的子數(shù)列和大于基準值元素的子數(shù)列排序。

*

* ? * @param numbers ? * @param start ? * @param end ? */ ? public static void quickSort(int[] numbers, int start, int end) { ? ? ?if (start < end) { ? ? ? ? ?int base = numbers[start]; // 選定的基準值(第一個數(shù)值作為基準值) ? ? ? ? ?int temp; // 記錄臨時中間值 ? ? ? ? ?int i = start, j = end; ? ? ? ? ?do { ? ? ? ? ? ? ?while ((numbers[i] < base) && (i < end)) ? ? ? ? ? ? ? ? ?i++; ? ? ? ? ? ? ?while ((numbers[j] > base) && (j > start)) ? ? ? ? ? ? ? ? ?j--; ? ? ? ? ? ? ?if (i <= j) { ? ? ? ? ? ? ? ? ?temp = numbers[i]; ? ? ? ? ? ? ? ? ?numbers[i] = numbers[j]; ? ? ? ? ? ? ? ? ?numbers[j] = temp; ? ? ? ? ? ? ? ? ?i++; ? ? ? ? ? ? ? ? ?j--; ? ? ? ? ? ? ?} ? ? ? ? ?} while (i <= j); ? ? ? ? ?if (start < j) ? ? ? ? ? ? ?quickSort(numbers, start, j); ? ? ? ? ?if (end > i) ? ? ? ? ? ? ?quickSort(numbers, i, end); ? ? ?} ? }

選擇排序:

1)直接選擇排序(每次從序列中選取最小值然后放到序列末尾)

2)堆排序(用到的情況比較少此處不做介紹)


/** ?
 * 選擇排序
? *

在未排序序列中找到最小元素,存放到排序序列的起始位置

*

再從剩余未排序元素中繼續(xù)尋找最小元素,然后放到排序序列末尾。

*

以此類推,直到所有元素均排序完畢。

* ? * @param numbers ? */ ? public static void selectSort(int[] numbers) { ? ? ?int size = numbers.length, temp; ? ? ?for (int i = 0; i < size; i++) { ? ? ? ? ?int k = i; ? ? ? ? ?for (int j = size - 1; j >i; j--) ?{ ? ? ? ? ? ? ?if (numbers[j] < numbers[k]) ?k = j; ? ? ? ? ?} ? ? ? ? ?temp = numbers[i]; ? ? ? ? ?numbers[i] = numbers[k]; ? ? ? ? ?numbers[k] = temp; ? ? ?} ? }

插入排序

1)直接插入排序(通過構(gòu)建有序序列,對于未排序數(shù)據(jù),在已排序序列中從后向前掃描,找到相應(yīng)位置并插入)

2)希爾排序


/** ?
 * 插入排序
? *

*

從第一個元素開始,該元素可以認為已經(jīng)被排序

*

取出下一個元素,在已經(jīng)排序的元素序列中從后向前掃描

*

如果該元素(已排序)大于新元素,將該元素移到下一位置

*

重復(fù)步驟3,直到找到已排序的元素小于或者等于新元素的位置

*

將新元素插入到該位置中

*

重復(fù)步驟2

*

* ? * @param numbers ? */ ? public static void insertSort(int[] numbers) { ? ? ?int size = numbers.length, temp, j; ? ? ?for(int i=1; i

歸并排序(將兩個已經(jīng)排序的序列排序為一個序列)


代碼

/** ?
 * 歸并排序
? *

*

申請空間,使其大小為兩個已經(jīng)排序序列之和,該空間用來存放合并后的序列

*

設(shè)定兩個指針,最初位置分別為兩個已經(jīng)排序序列的起始位置

*

比較兩個指針所指向的元素,選擇相對小的元素放入到合并空間,并移動指針到下一位置

*

重復(fù)步驟3直到某一指針達到序列尾

*

將另一序列剩下的所有元素直接復(fù)制到合并序列尾

*

* ? * @param numbers ? */ ? public static void mergeSort(int[] numbers, int left, int right) { ? ? ?int t = 1;// 每組元素個數(shù) ? ? ?int size = right - left + 1; ? ? ?while (t < size) { ? ? ? ? ?int s = t;// 本次循環(huán)每組元素個數(shù) ? ? ? ? ?t = 2 * s; ? ? ? ? ?int i = left; ? ? ? ? ?while (i + (t - 1) < size) { ? ? ? ? ? ? ?merge(numbers, i, i + (s - 1), i + (t - 1)); ? ? ? ? ? ? ?i += t; ? ? ? ? ?} ? ? ? ? ?if (i + (s - 1) < right) ? ? ? ? ? ? ?merge(numbers, i, i + (s - 1), right); ? ? ?} ? } ? /** ? * 歸并算法實現(xiàn) ? * ? * @param data ? * @param p ? * @param q ? * @param r ? */ ? private static void merge(int[] data, int p, int q, int r) { ? ? ?int[] B = new int[data.length]; ? ? ?int s = p; ? ? ?int t = q + 1; ? ? ?int k = p; ? ? ?while (s <= q && t <= r) { ? ? ? ? ?if (data[s] <= data[t]) { ? ? ? ? ? ? ?B[k] = data[s]; ? ? ? ? ? ? ?s++; ? ? ? ? ?} else { ? ? ? ? ? ? ?B[k] = data[t]; ? ? ? ? ? ? ?t++; ? ? ? ? ?} ? ? ? ? ?k++; ? ? ?} ? ? ?if (s == q + 1) ? ? ? ? ?B[k++] = data[t++]; ? ? ?else ? ? ? ? ?B[k++] = data[s++]; ? ? ?for (int i = p; i <= r; i++) ? ? ? ? ?data[i] = B[i]; ? }





本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉