幾種排序演算法實現

2021-08-18 01:21:23 字數 1026 閱讀 2418

class sort

;

#include "sort.h"

#include sort::sort(void)

sort::~sort(void)

//交換兩個數

inline void sort::swap(int &a,int &b)

//氣泡排序

//1.比較相鄰的前後兩個資料,如果前面的資料大於後面的資料,就將兩個資料交換。

//2.這樣對陣列的第0個資料到n-1個資料進行一次遍歷後,最大的乙個資料就「沉」到陣列第n-1個位置。

如果n不為0就重複前面兩步,否則排序完成。

void sort::bubblesort(int a,int n)

} }}//直接插入排序

//1.初始時,a[0]自成1個有序區,無序區為a[1...n-1],令i=1

//2.將a[i]併入當前的有序區a[0...i-1]中形成a[0...i]的有序區

並重複第二步直到i==n-1,排序完成

void sort::insertsort(int a,int n)

a[j+1]=temp;

} }}//希爾排序

//先將整個待排序元素序列分割成若干個子串行分別進行直接插入排序,然後依次縮減增量再進行排序,待整個序列中的元素基本有序時(增量足夠小)時,再對全體元素進行一次直接插入排序。

void sort::sellsort(int a,int n)

} }}//選擇排序法

//1.初始時,陣列全為無序區,令i=0

//2.在無序區中選乙個最小的元素,將其與a[i]交換。交換之後a[0...i]就成了乙個有序區

,並重複第二步知道i==n-1,完成排序

void sort::selectsort(int a,int n)

a[i]=x;//此時i=j

quicksort(a,l,i-1);//遞迴呼叫

quicksort(a,i+1,r);

}}

幾種排序演算法實現分析

合併排序 void merge int a,int left,int mid,int right,int b else void copy int a,int b,int left,int right void mergesort int a,int left,int right,int len i...

C 實現幾種排序演算法

概念 氣泡排序的大概思想是兩兩比較相鄰記錄的關鍵字,如果反序則交換,直到沒有反序為止 1.普通冒泡法 void bubblesort vector vi 2.優化冒泡法,增加標誌位,對已經有序的序列不在進行比較 void bubblesort2 vector vi 概念 通過n i次關鍵字間的比較,...

幾種排序演算法的實現

對陣列int a n 進行直接插入排序 void insertsort int a,int n r j 1 temp 完成下標為i的元素的排序 對陣列a n 進行折半插入排序 void insertsort int a,int n 折半查詢結束 移動元素 for j i j high 1 j a j...