1. 程式人生 > >C#實現排序演算法

C#實現排序演算法

1.選擇排序

 //選擇排序 每次迴圈 依次與第一個數進行比較
            for (int i = 0; i < arry.Length; i++)
            {
                for (int j = i+1; j < arry.Length; j++)
                {
                    if (arry[i]>arry[j])
                    {
                        int temp = 0;
                        temp = arry[i];
                        arry[i] = arry[j];
                        arry[j] = temp;
                    }
                }
            }

2.氣泡排序

 int [] nums = { 1,5,6,2,8,8,74,4};
            //氣泡排序
            int temp = 0;
            
            for (int i = 0; i < nums.Length; i++)
            {
                for (int j = 0; j < nums.Length-1-i; j++)
                {
                    if (nums[j]>nums[j+1])
                    {
                        temp = nums[j];
                        nums[j] = nums[j + 1];
                        nums[j + 1] =temp;
                    }
                }
            }
            for (int i = 0; i < nums.Length; i++)
            {
                Console.WriteLine(nums[i]);
            }

相關推薦

C#實現排序演算法

1.選擇排序 //選擇排序 每次迴圈 依次與第一個數進行比較 for (int i = 0; i < arry.Length; i++) { for (int j = i+1; j &l

C++拾取——使用stl標準庫實現排序演算法及評測

        今天看了一篇文章,講各種語言的優勢和劣勢。其中一個觀點:haskell非常適合寫演算法,因為使用者不用去關心具體的計算機實現,而只要關注於操作語義。這讓它在專心研究演算法的人中非常受歡迎。所以很多時候,語言的爭論沒有太多的意義,有意義的是它

c#程式碼實現排序演算法之歸併排序

歸併排序的平均時間複雜度為O(nlogn),最好時間複雜度為O(nlogn),最壞時間複雜度為O(nlogn),空間複雜度為O(n),是一種穩定的演算法。 1.將待排序序列r(1),r(2),…,r(n)劃分為兩個長度相等的子序列r(1),…r(n/2)和r(n/2+1),…,r

c#程式碼實現排序演算法之快速排序

快速排序的平均時間複雜度為O(nlog2n),最好時間複雜度為O(nlog2n),最壞時間複雜度為O(n²),空間複雜度為O(log2n),是一種不穩定的演算法。 1.劃分:選定一個記錄作為軸值,以軸值為基準將整個序列劃分為兩個子序列r(1)…r(i-1)和r(i+1)…r(n)

c#程式碼實現排序演算法之氣泡排序

氣泡排序的平均時間複雜度為O(n²),最好時間複雜度為O(n),最壞時間複雜度為O(n²),空間複雜度為O(1),是一種穩定的演算法。 1.將整個待排序的記錄序列劃分成有序區和無序區,初始時有序區為空,無序區包括所有待排序的記錄。 2.對無序區從前向後依次比較相鄰記錄,若反序則交

c#程式碼實現排序演算法之選擇排序

選擇排序的平均時間複雜度為O(n²),最好時間複雜度為O(n²),最壞時間複雜度為O(n²),空間複雜度為O(1),是一種不穩定的演算法。 1.將整個記錄序列劃分為有序區和無序區,初始時有序區為空,無序區含有待排序的所有記錄。 2.在無序區查詢值最小的記錄,將它與無序區的第一個記

c#程式碼實現排序演算法之插入排序

插入排序的平均時間複雜度為O(n²),最好時間複雜度為O(n),最壞時間複雜度為O(n²),空間複雜度為O(1),是一種穩定的演算法。 1.將整個待排序的記錄序列劃分成有序區和無序區,初始時有序區為待排序記錄序列的第一個記錄,無序區包括所有剩餘待排序的記錄。 2.將無序區的第一個

C語言實現排序演算法---希爾排序

今天又重新研究了一遍諸多排序演算法,現在簡單分享一下里面的希爾排序(Shell Sort)的心得。 希爾排序(Shell Sort)是插入排序的一種。也稱縮小增量排序,是直接插入排序演算法的一種

C++ 氣泡排序演算法實現與改進(含筆試面試題)

      氣泡排序(Bubble sort)也是一種簡單直觀的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由

C++ 計數排序演算法實現與改進(含筆試面試題)

      計數排序侷限性比較大,演算法思想:假定輸入是有一個小範圍內的整數構成的(比如年齡等),利用額外的陣列去記錄元素應該排列的位置,思想比較簡單。       計數排序是典型的不是基於比較的排序

C++ 插入排序演算法實現與改進(含筆試面試題)

      插入排序是一種最簡單直觀的排序演算法,它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃描,找到相應位置並插入。 簡單小tips:假設一個數列:1、2、5、3。插入排

C++ 堆排序演算法實現與改進(含筆試面試題)

堆排序(Heap sort)是指利用堆這種資料結構所設計的一種排序演算法。堆積是一個近似完全二叉樹的結構,並同時滿足堆積的性質:即子結點的鍵值或索引總是小於(或者大於)它的父節點。堆排序可以用到上一次

高自由度:c++八大排序演算法實現程式碼和原理

網上有很多八大排序的程式碼,不過那都比較簡約,只是想表明演算法原理。當然也有個人的部落格寫的也是很好的。我寫的八大排序演算法有以下幾個特點:1、只要改變一個數值,就能實現從小到大或從大到小的排序。2、改變一個N的值可以隨便改變排序陣列的元素的多少。3、排序適合int、lon

C++實現introSort演算法

寫在前面 在STL的sort演算法中,本以為是使用quick sort演算法實現的,但是仔細一個實質上而是使用introSort演算法實現的,這種演算法可以根據遞迴的深度來決定是否還是使用quick sort,如果遞迴的深度過深,則在對應區間上使用heap sort演算法來實現 並且,我們知

C#快速排序演算法

今天重溫了下排序演算法,包括氣泡排序法和直接排序法,這些都比較簡單,只是快速排序法比較難,於是重點研究了下。   先說一說原理:快速排序法是採用遞迴的方式對待排序的數列進行若干次的操作,每次操作使得被操作的數列部分以某個元素為分界值分成兩部分,一部分小於該分界值,另一部分大於該分界值.該

js實現排序演算法

1.氣泡排序  比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後一個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。  程式碼如下:

C++實現快取演算法LRU和LFU

LRU的實現 運用你所掌握的資料結構,設計和實現一個LRU (最近最少使用) 快取機制 。它應該支援以下操作: 獲取資料 get 和 寫入資料 put 。 獲取資料 get(key) - 如果金鑰 (key) 存在於快

C++梳排序演算法

梳排序的原理:通過比較元素彼此之間的步長位置這種方式對資料進行預處理。在每次移動中,步長會越來越小,直至它等於1。 #include <iostream> #include <stdlib.h> using namespace std; /****

C#實現A*演算法(轉載)

理解A*尋路演算法具體過程 這兩天研究了下 A* 尋路演算法, 主要學習了這篇文章, 但這篇翻譯得不是很好, 我花了很久才看明白文章中的各種指代. 特寫此篇部落格用來總結, 並寫了尋路演算法的程式碼, 覺得有用的同學可以看看. 另外因為圖片製作起來比較麻煩, 所以我用的是原

JS實現排序演算法(氣泡排序、快速排序

const a = [21, 3, 242, 3432, 13, 13, 123, 4, 35, 22, 1]; // 氣泡排序 // 核心思想:每次比較相鄰的數,如果它們順序錯誤,就把它們交換過來。如同氣泡一樣往後翻滾。 // 最外層的迴圈,每次至少要讓一個元素歸位。 /