常見的一些排序演算法,一些是從書上看的,一些則是參考別人的部落格,從雜亂無章的部落格裡提取實屬不易,多謝理解!
直接插入排序演算法的基本思路:把未排序的資料放在乙個已排序好的陣列裡面
演算法名稱
平均時間複雜度
最差時間分析
空間複雜度
穩定度直接插入排序
o(n2)
o(n2)
o(1)
穩定
所有排序方法的 main 函式
#include using namespace std;
//直接插入排序 for
void insertfor(int s, int n);
//直接插入排序 while
void insertwhile(int s, int n);
//折半插入排序
void halfinsert(int s, int n);
//氣泡排序
void bubblesort(int s, int n);
int main()
; //待排序陣列
int alength = sizeof(a)/sizeof(a[0]); //待排序陣列的長度
cout<<"before sort"<=0 && a[j]>temp)
a[j+1] = temp; //哨兵(暫存的變數)賦給對應位置
} }}
折半插入排序演算法的基本思路:跟直接插入排序一樣,都是把未排序的資料放在乙個已排序好的陣列裡面.折半插入排序演算法相對直接插入排序演算法減少了插入位置的尋找比較次數,但是沒有減少元素的移動次數,所以排序的時間複雜度沒有大的變化,基本和直接插入排序保持一致,在陣列比較大時可能會減少時間複雜度。
演算法名稱
平均時間複雜度
最差時間分析
空間複雜度
穩定度折半插入排序
o(n2)
o(n2)
o(1)
穩定
//折半插入排序
void halfinsert(int a,int n)
for(j = i;j>low;j--) //移動次數仍然不變
a[j] = a[j-1];
a[low] = temp;
}}
氣泡排序演算法的基本思路:重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來.這個演算法的名字由來是因為越小的元素會經由交換慢慢「浮」到數列的頂端。
演算法名稱
平均時間複雜度
最差時間分析
空間複雜度
穩定度氣泡排序
o(n2)
o(n2)
o(1)
穩定//氣泡排序
void
bubblesort
(int a,
int n)}}
}
選擇排序演算法的基本思路:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾.因為每次都選擇乙個最小(最大)的排序,所以有了這個名字
演算法名稱
平均時間複雜度
最差時間分析
空間複雜度
穩定度選擇排序
o(n2)
o(n2)
o(1)
不穩定
//選擇排序
void selectsort(int a, int n)
} //如果最小的和i不相等,換值
if(min!=i)
}}
常見排序演算法 簡單排序
1.選擇排序 2.氣泡排序 雙向氣泡排序 3.插入排序 1.選擇排序 選擇排序是一種最為直觀的排序方法。每次迴圈從陣列中選擇出乙個最小或者最大的元素,按順序重新放入陣列中,直到所有的戴排序元素都排序完成。public void selectsort int a 從 不難看出,選擇排序的過程是 第一次...
常見簡單排序演算法的實現
一 氣泡排序 實現思想 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。void bubblesort int array,int len if isswap break 分析 氣泡排序演算法的時間複雜性為o n 2 屬於穩定的排序方法。二 選擇排序 實現思想 每一次從待排序的資料元素中選出最小...
簡單排序演算法
package com.shine.sort 排序演算法 說明 排序演算法分為三種 插入排序 交換排序 選擇排序 1.插入排序 直接插入排序 折半插入排序 希爾排序 2.交換排序 氣泡排序 快速排序 3.選擇排序 直接選擇排序 堆排序 public class mysort 希爾排序 描述 1.將乙...