常見簡單排序演算法的實現

2021-07-22 15:12:26 字數 1539 閱讀 7686

一、氣泡排序

實現思想:依次比較相鄰的兩個數,將小數放在前面,大數放在後面。

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.將乙...