C#排序算法之快速排序解析
本文實(shí)例為大家分享了C#實(shí)現(xiàn)快速排序的具體代碼,供大家參考,具體內(nèi)容如下
代碼:
/// <summary> /// 排序 /// </summary> /// <param name="array">要排序的數(shù)組</param> /// <param name="low">下標(biāo)開始位置,向右查找</param> /// <param name="high">下標(biāo)開始位置,向左查找</param> public static void Sort(int[] array, int low, int high) { if (low >= high) return; //完成一次單元排序 int index = SortUnit(array, low, high); //遞歸調(diào)用,對左邊部分的數(shù)組進(jìn)行單元排序 Sort(array, low, index - 1); //遞歸調(diào)用,對右邊部分的數(shù)組進(jìn)行單元排序 Sort(array, index + 1, high); } /// <summary> /// 單元排序 /// </summary> /// <param name="array">要排序的數(shù)組</param> /// <param name="low">下標(biāo)開始位置,向右查找</param> /// <param name="high">下標(biāo)開始位置,向右查找</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小開等的放左邊 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; }
以上就是本文的全部內(nèi)容,希望對大家的學(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訪問者模式解決長隆歡樂世界問題實(shí)例
這篇文章主要介紹了C#設(shè)計(jì)模式之Visitor訪問者模式解決長隆歡樂世界問題,簡單描述了訪問者模式的定義并結(jié)合具體實(shí)例形式分析了C#使用訪問者模式解決長隆歡樂世界問題的具體實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-09-09C#實(shí)現(xiàn)時(shí)間戳與標(biāo)準(zhǔn)時(shí)間的互轉(zhuǎn)
本文主要介紹了C#中時(shí)間戳與標(biāo)準(zhǔn)時(shí)間互轉(zhuǎn)的方法,其中需要注意的是基準(zhǔn)時(shí)間的問題。文中的示例代碼具有一定的學(xué)習(xí)價(jià)值,快來跟隨小編一起了解一下吧2021-12-12C#查找對象在ArrayList中出現(xiàn)位置的方法
這篇文章主要介紹了C#查找對象在ArrayList中出現(xiàn)位置的方法,涉及C#中IndexOf方法的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04C#函數(shù)式程序設(shè)計(jì)之用閉包封裝數(shù)據(jù)的實(shí)現(xiàn)代碼
如果一個(gè)程序設(shè)計(jì)語言能夠用高階函數(shù)解決問題,則意味著數(shù)據(jù)作用域問題已十分突出。當(dāng)函數(shù)可以當(dāng)成參數(shù)和返回值在函數(shù)之間進(jìn)行傳遞時(shí),編譯器利用閉包擴(kuò)展變量的作用域,以保證隨時(shí)能得到所需要的數(shù)據(jù)2014-03-03