1.氣泡排序:
思想:一共進行n-1次比較(假定序列個數為n),每次比較重都會有乙個最大的元素沉底
#includeusing namespace std;
void bubblesort(int a,int length)
}}
2.選擇排序:
演算法思想:
在每次遍歷序列時,通過將該位值元素與之後序列中的元素直接比較,獲得最小的元素放到該位置
void selectsort(int a,int length)
}void shellsort(int a,int length)
; shellsort(a,length,gap,9);
}
思想:
歸併演算法,指的是將兩個已經排序的序列合併成乙個序列的操作。歸併操作的演算法原理為:
1.申請空間,使其大小為兩個已經排序序列之和,用來存放合合併後的序列
2.設定兩個指標,分別指向兩個已經排好序的序列的起始位置。
3.比較兩個指標所指向的元素,選擇相對較小的元素放入合併空間中,並移動指標到下乙個位置
4.重複步驟3,直到某一指標到達序列為
5將另一串行剩下的所有元素直接賦值到合併序列尾部
6.將排好序的合併空間的所有元素賦值給原序列
歸併排序的具體原理(假定序列共有n個元素):
1.將序列每相鄰兩個數字進行歸併操作(merge),形成floor(n/2)個序列,排序後的每個序列包含兩個元素
2.將上訴序列再次歸併,形成floor(n/4)個序列,每個序列包含四個元素。
void merge(int *array,int first,int mid,int last)
h[start]= temp; //插入最開始的根節點元素
}void heapsort(elemtype a,int n)
}
測試主程式如下:
#includeusing namespace std;
int main()
; //selectsort(a,10);
//bubblesort(a,10);
//straightinsertsort(a,10);
//binaryinsertsort(a,10);
//shellsort(a,10);
//mergesort(a,10);
//quicksort(a,10);
heapsort(a,10);
for(int i=0;i<10;i++)
cout
8大排序總結
include includeusing namespace std void select sort vector a 選擇排序 非穩定 void bubble sort vector a 氣泡排序 void insert sort vector a 插入排序 有序最快 void shell so...
排序 總結(8)
穩定排序 氣泡排序 bubble sort o n 插入排序 insertion sort o n 桶排序 bucket sort o n 需要 o k 額外空間 計數排序 counting sort o n k 需要 o n k 額外空間 合併排序 merge sort o n log n 需要 ...
8大排序演算法
一 各個排序演算法的過程 1 直插入排序 乙個個的進行插入,直到有序序列。穩定的。要點 設立哨兵,作為臨時儲存和判斷陣列邊界之用。具體實現 如下 時間複雜度 o n 2 void insertsort int a,int n 3 選擇排序 按大小順序一次選出,進行公升降排列。在要排序的一組數中,選出...