麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

排序算法 之 冒泡排序

2019-11-10 20:39:38
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

原文地址http://www.cnblogs.com/liukemng/p/3715925.html

之前看到一個(gè)題目,大概是:有一個(gè)長(zhǎng)度為n的數(shù)組,數(shù)組內(nèi)的元素取值范圍為0到m,且不相等,要求元素經(jīng)過(guò)n次移動(dòng)后使數(shù)組有序(即算法的復(fù)雜度為O(n))。看到題目后想了快速排序和歸并排序發(fā)現(xiàn)并不能滿(mǎn)足題目要求,直到有次看書(shū)又看到了桶排序然后豁然開(kāi)朗,所以決定把這些排序算法再寫(xiě)一遍,加深記憶。

約定:之后的文章默認(rèn)待排序的數(shù)組大小都為n,排序結(jié)果為由小到大,采用c#作為代碼實(shí)現(xiàn)。

 

1.基本的冒泡排序算法:

基本思想:

冒泡排序外層共需要對(duì)序列進(jìn)行n-1次遍歷,內(nèi)層從e[0]到e[n-i](i為外層遍歷的次數(shù))兩兩進(jìn)行比較,如果e[j-1]>e[j]則進(jìn)行交換,直到比較e[0]和e[1]后為止,冒泡排序算法的時(shí)間復(fù)雜度為O(n2);;

代碼實(shí)現(xiàn):

復(fù)制代碼
/// <summary>/// 基本的冒泡排序算法/// </summary>/// <param name="intArray"></param>/// <param name="length"></param>public static void BubbleSort(int[] intArray, int length){    int i, j, temp;    for (i = 0; i < length; i++)    {        for (j = 1; j < length - i; j++)        {            if (intArray[j - 1] > intArray[j])            {                temp = intArray[j - 1];                intArray[j - 1] = intArray[j];                intArray[j] = temp;            }        }    }}復(fù)制代碼
2.改進(jìn)的冒泡排序算法一:
上面的排序算法不管某次循環(huán)后數(shù)組是否已經(jīng)有序,依然繼續(xù)遍歷,這樣的話(huà)在對(duì)基本有序的數(shù)組進(jìn)行排序是效率顯然是很低的,我們可以設(shè)置一個(gè)標(biāo)志位,判斷某次遍歷后元素是否發(fā)生了交換,如果沒(méi)有發(fā)生交換則證明排序完成,結(jié)束遍歷從而提高效率 ;
代碼實(shí)現(xiàn):復(fù)制代碼
/// <summary>/// 改進(jìn)后的冒泡排序算法1/// 設(shè)立標(biāo)志判斷某次循環(huán)是否發(fā)生了交換,如果沒(méi)有發(fā)生交換則證明排序完成/// </summary>/// <param name="intArray"></param>/// <param name="length"></param>public static void BubbleSort1(int[] intArray, int length){    int i, temp, k = length;    bool flag = true;    while (flag)    {        flag = false;        for (i = 1; i < k; i++)        {            if (intArray[i - 1] > intArray[i])            {                flag = true;                temp = intArray[i - 1];                intArray[i - 1] = intArray[i];                intArray[i] = temp;            }        }        k--;    }}復(fù)制代碼

3.改進(jìn)的冒泡排序算法二:

上面改進(jìn)后的冒泡排序算法還可以繼續(xù)改進(jìn),比如在進(jìn)行第一次遍歷前序列元素排列是這樣的,我們發(fā)現(xiàn)當(dāng)把元素5,4進(jìn)行交換后,后面的元素已經(jīng)有序,則我們可以設(shè)置一個(gè)標(biāo)志,記錄最后一次交換元素的位置,在以后的遍歷中可以根據(jù)設(shè)置的標(biāo)志來(lái)縮短要比較元素的下界;

321546789

代碼實(shí)現(xiàn):

復(fù)制代碼
/// <summary>/// 改進(jìn)后的冒泡排序算法2/// 記錄最后一次交換的位置作為排序交換的結(jié)束位置/// </summary>/// <param name="intArray"></param>/// <param name="length"></param>public static void BubbleSort2(int[] intArray, int length){    int i, temp, index, k = length;    while (k > 0)    {        index = k;        k = 0;        for (i = 1; i < index; i++)        {            if (intArray[i - 1] > intArray[i])            {                k = i;                temp = intArray[i - 1];                intArray[i - 1] = intArray[i];                intArray[i] = temp;            }        }    }}復(fù)制代碼

以上就是冒泡排序算法的內(nèi)容。


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美一级一区二区三区 | 在线看一级片 | 久久性生活免费视频 | 国产一区二区三区在线视频 | 日本在线不卡一区二区 | 日韩高清电影 | 免费a级毛片大学生免费观看 | 日日碰日日操 | 亚洲精品午夜在线 | 久久99精品久久久久久秒播蜜臀 | 少妇一级淫片高潮流水电影 | 成人综合在线观看 | 国产精选久久 | 国产亚洲精品视频中文字幕 | 亚洲乱搞 | 免费毛片视频 | av免费不卡国产观看 | 免费a视频| 欧美日韩在线看片 | 精品国产一区二区三区四区在线 | 中国杭州少妇xxxx做受 | 亚洲狠狠入| 中文字幕极速在线观看 | 欧美aⅴ视频| 国产亚洲精品久久午夜玫瑰园 | 日韩色视频在线观看 | bt 自拍 另类 综合 欧美 | 久久久综合久久久 | 香蕉成人在线视频 | 激情国产视频 | 国产成人综合在线视频 | 深夜影院一级毛片 | 一区在线视频观看 | 成人在线视频网 | 精品一区二区久久久久久久网精 | 亚洲网站一区 | 午夜视频在线 | 欧美精品久久久久久久久久 | 一区二区视频在线看 | 色999中文字幕 | 日本a大片|