C#排序算法之快速排序解析
本文實(shí)例為大家分享了C#實(shí)現(xiàn)快速排序的具體代碼,供大家參考,具體內(nèi)容如下
代碼:
/// <summary> /// 排序 /// </summary> /// <param name="array">要排序的數(shù)組</param> /// <param name="low">下標(biāo)開(kāi)始位置,向右查找</param> /// <param name="high">下標(biāo)開(kāi)始位置,向左查找</param> public static void Sort(int[] array, int low, int high) { if (low >= high) return; //完成一次單元排序 int index = SortUnit(array, low, high); //遞歸調(diào)用,對(duì)左邊部分的數(shù)組進(jìn)行單元排序 Sort(array, low, index - 1); //遞歸調(diào)用,對(duì)右邊部分的數(shù)組進(jìn)行單元排序 Sort(array, index + 1, high); } /// <summary> /// 單元排序 /// </summary> /// <param name="array">要排序的數(shù)組</param> /// <param name="low">下標(biāo)開(kāi)始位置,向右查找</param> /// <param name="high">下標(biāo)開(kāi)始位置,向右查找</param> /// <returns>每次單元排序的停止下標(biāo)</returns> public static int SortUnit(int[] array, int low, int high) { int key = array[low];//基準(zhǔn)數(shù) while (low < high) { //從high往前找小于或等于key的值 while (low < high && array[high] > key) high--; //比key小開(kāi)等的放左邊 array[low] = array[high]; //從low往后找大于key的值 while (low < high && array[low] <= key) low++; //比key大的放右邊 array[high] = array[low]; } //結(jié)束循環(huán)時(shí),此時(shí)low等于high,左邊都小于或等于key,右邊都大于key。將key放在游標(biāo)當(dāng)前位置。 array[low] = key; return high; }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
c#將list類型轉(zhuǎn)換成DataTable方法示例
將List類型轉(zhuǎn)換成DataTable的通用方法,大家參考使用吧2013-12-12C#自定義RSA加密解密及RSA簽名和驗(yàn)證類實(shí)例
這篇文章主要介紹了C#自定義RSA加密解密及RSA簽名和驗(yàn)證類,實(shí)例分析了C#實(shí)現(xiàn)RSA加密解密及RSA簽名和驗(yàn)證的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03C#設(shè)計(jì)模式之Visitor訪問(wèn)者模式解決長(zhǎng)隆歡樂(lè)世界問(wèn)題實(shí)例
這篇文章主要介紹了C#設(shè)計(jì)模式之Visitor訪問(wèn)者模式解決長(zhǎng)隆歡樂(lè)世界問(wèn)題,簡(jiǎn)單描述了訪問(wèn)者模式的定義并結(jié)合具體實(shí)例形式分析了C#使用訪問(wèn)者模式解決長(zhǎng)隆歡樂(lè)世界問(wèn)題的具體實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-09-09百度人臉識(shí)別之人臉識(shí)別FaceIdentify(簽到考勤)
這篇文章主要為大家詳細(xì)介紹了百度人臉識(shí)別之人臉識(shí)別FaceIdentify,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08C#實(shí)現(xiàn)時(shí)間戳與標(biāo)準(zhǔn)時(shí)間的互轉(zhuǎn)
本文主要介紹了C#中時(shí)間戳與標(biāo)準(zhǔn)時(shí)間互轉(zhuǎn)的方法,其中需要注意的是基準(zhǔn)時(shí)間的問(wèn)題。文中的示例代碼具有一定的學(xué)習(xí)價(jià)值,快來(lái)跟隨小編一起了解一下吧2021-12-12C#查找對(duì)象在ArrayList中出現(xiàn)位置的方法
這篇文章主要介紹了C#查找對(duì)象在ArrayList中出現(xiàn)位置的方法,涉及C#中IndexOf方法的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04C#函數(shù)式程序設(shè)計(jì)之用閉包封裝數(shù)據(jù)的實(shí)現(xiàn)代碼
如果一個(gè)程序設(shè)計(jì)語(yǔ)言能夠用高階函數(shù)解決問(wèn)題,則意味著數(shù)據(jù)作用域問(wèn)題已十分突出。當(dāng)函數(shù)可以當(dāng)成參數(shù)和返回值在函數(shù)之間進(jìn)行傳遞時(shí),編譯器利用閉包擴(kuò)展變量的作用域,以保證隨時(shí)能得到所需要的數(shù)據(jù)2014-03-03