一、氣泡排序
實現思想:依次比較相鄰的兩個數,將小數放在前面,大數放在後面。
void bubblesort(int
array, int len)
}if(!isswap) break;
}}
分析:氣泡排序演算法的時間複雜性為o(n^2),屬於穩定的排序方法。
二、選擇排序
實現思想:每一次從待排序的資料元素中選出最小的乙個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。
void selectionsort(int array, int len)
}if(index != i)
}}
分析:選擇排序演算法的時間複雜性為o(n^2),屬於不穩定的排序方法。
三、插入排序
實現思路:每步將乙個待排序的紀錄,按其關鍵碼值的大小插入前面已經排序的檔案中適當位置上,直到全部插入完為止。
void insertsort(int unsorted, int len)
unsorted[j] = temp;}}
}
分析:插入排序演算法的時間複雜性為o(n^2),屬於穩定的排序方法。
四、桶排序
實現思路:簡單的桶排序,適用於正整數且上界不大的陣列排序。此處的對映直接是直接線性的。
#define max 1000
void bucketsort(int
array, int len)
int j = 0;
for(int i = 0; i < max; i++)
}}
分析:這個簡單的桶排序時間複雜度是o(n),空間複雜度為o(n)。
五、基數排序
實現思路:lsd法:先從kd開始排序,再對kd-1進行排序,依次重複,直到對k1排序後便得到乙個有序序列。即元素從個位排好序,然後再從十位排好序,…直到最高位排序完成。
void radixsort(vector
&v, int d, int size)
j = 0;
for(int digitvalue = 0; digitvalue < 10; digitvalue++)
}cout
<<"經過第 "
<< i << " 次排序的結果如下:"
<< endl;
for(j = 0; j < size; j++)
cout
<< endl;
digit *= 10;
} }
分析:,基數排序法的時間複雜度為o (nlog(r)m),其中r為所採取的基數,而m為堆數。屬於穩定性的排序。 常見排序演算法 簡單排序
1.選擇排序 2.氣泡排序 雙向氣泡排序 3.插入排序 1.選擇排序 選擇排序是一種最為直觀的排序方法。每次迴圈從陣列中選擇出乙個最小或者最大的元素,按順序重新放入陣列中,直到所有的戴排序元素都排序完成。public void selectsort int a 從 不難看出,選擇排序的過程是 第一次...
演算法 常見的排序演算法 簡單排序
常見的一些排序演算法,一些是從書上看的,一些則是參考別人的部落格,從雜亂無章的部落格裡提取實屬不易,多謝理解 直接插入排序演算法的基本思路 把未排序的資料放在乙個已排序好的陣列裡面 演算法名稱 平均時間複雜度 最差時間分析 空間複雜度 穩定度直接插入排序 o n2 o n2 o 1 穩定所有排序方法...
簡單排序演算法
package com.shine.sort 排序演算法 說明 排序演算法分為三種 插入排序 交換排序 選擇排序 1.插入排序 直接插入排序 折半插入排序 希爾排序 2.交換排序 氣泡排序 快速排序 3.選擇排序 直接選擇排序 堆排序 public class mysort 希爾排序 描述 1.將乙...