1.氣泡排序
//氣泡排序
int a[20]
;int n;
for(
int i=
0;i1;i++
)
而對於氣泡排序有乙個優化的方法,優化在於當一次排序沒有進行過交換的時候,也就是之後的順序都是有序的時候,相當於整個序列都是有序的了。
//氣泡排序優化
int a[20]
;int n;
int falg;
//做乙個標記位來判斷之後需不需要換位
for(
int i=
0;i1;i++)}
//如若沒有進行過if(
!falg)
break
;}
演算法評價:1.演算法的時間複雜度是 0(n^2) 2.該演算法是穩定的(因為相對位置一直都沒變,就是在比較)
2.快速排序
排序過程:選擇乙個關鍵字,通常是序列的第乙個或者是最後乙個。然後經過一次排序將整個序列分成兩部分,左邊部分的值都小於選定關鍵字,右邊部分都大於關鍵字。依次開始對兩部分再進行快速排序,直到所有都有序。
偽**:
void
quick_sort
(elementtype s,
int low,
int high)
}
int
partition
(elementtype s,
int low,
int high)
a[low]
= pivot;
return low;
//此時low或者high就是pivot的最終位置
}
演算法評價:1.平均複雜度是0(nlogn) 2.演算法是不穩定的(因為需要將陣列進行排序換位分組)
3.直接插入排序
排序過程:相當於就是將s[i]插入到已經排好序的(0–s[i-1])這個序列當中,具體插入方法是,選中乙個大於他,但是前面乙個小於他的位置,然後將後面的位置全都向後移乙個。
偽**:
void
insertion_sort
(elementtype s,
int n)
}
演算法評價:1.最壞情況是o(n^2) 最好的情況就是原來就是有序的 o(n) 2.演算法是穩定的
4.希爾排序
排序過程:將序列以一定值分成乙個個部分序列,然後對每個部分序列進行直接插入排序。
偽**:
void
shell_sort
(elementtype s,
int n)
s[i]
= tmp;
}}
演算法評價:1.演算法的時間複雜度是 評價是:o(n^1.3),最好的情況是o(n) 2.該演算法是不穩定的
5.直接選擇排序
排序過程:就如名字所說,直接從未排序的序列中選擇最小的乙個,然後放到已經排好序的序列中,直到序列全部排序好。
偽**:
void
selectsort
(elementtype s,
int n)
if(min != i)
swap
(s[i]
,s[min]);
}}
演算法評價:1.演算法的時間複雜度是o(n^2) 2.演算法是不穩定的(如:(7) 2 5 9 3 4 [7] 1…當我們利用直接選擇排序演算法進行排序時候,(7)和1調換,(7)就跑到了[7]的後面了,原來的次序改變了,這樣就不穩定了.)
6.堆排序
排序過程:首先將序列以乙個類似於完全二叉樹的形式展現,然後排序成小頂堆或者大頂堆的形式,取出堆頂元素(取出方法:與最後乙個節點資料交換,再刪去最後節點),將修改後的堆重新排序成大頂堆或者小頂堆,繼續進行,直到全部排序完。
偽**:
/*調整成最大堆*/
void
heapadjust
(elementtype s,
int k,
int n)
k[s]
= tmp;
}void
heap_sort
(elementtype s,
int n)
}
演算法評價:1.時間複雜度是:o(nlogn) 2.該演算法不是穩定的(因為需要分組,且每組排序情況不一致)
7.歸併排序
排序過程:以二路為例:假定待排序列含有n個記錄,則可以看作n個有序的子表,每個子表的長度為1,然後兩兩歸併,得到n/2(向上取整)個長度為2或1的子表;再兩兩歸併,…一直重複,直到合併為乙個長度為n的有序表為止。
偽**:
#define maxsize 100
void
merge
(int
*list1,
int list1_size,
int*list2,
int list2_size)
void
merge_sort
(int s,
int n)
}
演算法評價:1.時間複雜度是o(nlogn) 2.該演算法是穩定的(雖然進行了分組,但是組與組之間的相對位置一直都是不變的) 資料結構之排序演算法 彙總
排序演算法應該是最基礎的演算法了,博主面試至今沒有面試官單就乙個排序演算法讓寫個 什麼的。本篇小博先對常見的排序演算法進行一下總結,方便日後檢視吧。主要內容包括 氣泡排序 快速排序 選擇排序 堆排序 插入排序 希爾排序 歸併排序。一 氣泡排序 如下 public static int bubbles...
tableau彙總資料排序(正常不能排序)
發現access資料庫裡,期間 這個表有問題,有它和 簡易工資表 做聯接時,不但資料庫反應超慢,而且出現問題,統計資料出現錯誤,一定要注意這個問題 如 烏海龐大興銳汽車銷售服務 只在2015年11月份工資時,能統計出2個人,而實際情況是 這個單位只在當年1月 2月各有一人。暫行解決辦法 一 錯誤找到...
資料結構經典演算法彙總
迴圈佇列 除錯成功 include iostream.h class ssqueue ssqueue int insert const int item if isfull int out int getsize int isempty empty retrun 1 int isfull full ...