經典排序演算法總結 模板(C 實現)

2021-10-05 04:23:05 字數 2149 閱讀 6916

1.選擇排序

template //選擇排序

void selectionsort(t arr,int n)

arr[j] = e;

}}

3.歸併排序

template//歸併排序

void meregesort(t arr,int qaq,int qbq)

template//遞迴對[l,r]進行排序

void __mergesort(t arr,int l,int r)

template//對[l,mid]和[mid+1,r]進行歸併

void __merge(t arr,int l,int mid,int r)

else if(j>r)

else if(aux[i-l]4.一般快速排序

//對arr[l,r]進行partition操作

//返回p 使得arr[l,p-1]arr[p]

templateint _partition(t arr,int l,int r)

templatevoid quick_sort(t arr,int a,int b)

5.二路快速排序

templateint _partition2(t arr,int l,int r)

swap(arr[l],arr[j]);

return j;

}templatevoid __quick_sort2(t arr,int l,int r)

templatevoid quick_sort2(t arr,int a,int b)

6.三路快速排序

templatevoid __quick_sort3ways(t arr,int l,int r)

else

}swap(arr[l],arr[lt]);

__quick_sort3ways(arr,l,lt-1);

__quick_sort3ways(arr,gt,r);

}templatevoid quick_sort3ways(t arr,int a,int b)

7.堆排序

templateclass maxheap

}public:

maxheap(int capacity)

maxheap(item arr,int n)

int size()

bool isempty()

void insert(item item)

item extractmax()

~maxheap()

};templatevoid heapsort1(t arr,int a,int b)

template//heapify方法

void heapsort2(t arr,int a,int b)

//以上堆排序 需要額外空間

templatevoid __shiftdown2(t arr,int n,int k)

}templatevoid heapsort(t arr,int a,int b)

}//...........

//...........

//索引堆

//...........

//...........

templateclass indexmaxheap

}public:

maxheap(int capacity)

maxheap(item arr,int n)

int size()

bool isempty()

//傳入的i使用者是陣列從0開始,其實堆從1開始

void insert(int i,item item)

item extractmax()

int extractmax()

item getitem(int i)

void change(int i,item newitem)}}

~maxheap()

};

總結 經典排序演算法 C )

最近在學習演算法,趁這個機會總結一些演算法。慢慢更新,歡迎交流 排序 輸入 n個數 輸出 有序 從大到小 從小到大 序列 一 插入排序 做排序的都需要做遍歷,而插入排序,顧名思義,就是插隊。不必多說,給個案例體會一下 輸入 5 4 3 2 1 處理 輸出 1 2 3 4 5 輸入 6 8 2 4 5...

經典排序演算法C 實現

用c 實現了經典的氣泡排序 插入排序 選擇排序 堆排序 快速排序 希爾排序 歸併排序。等空閒的時候再補充每個排序演算法的思想以及易錯點。氣泡排序 void bubble sort vector arr,int n if swaped 0 break else swaped 0 插入排序 withou...

經典排序演算法(C 實現)

氣泡排序 public static int bubblesort int array return array 選擇排序 1.從左至右遍歷,找到最小 大 的元素,然後與第乙個元素交換。2.從剩餘未排序元素中繼續尋找最小 大 元素,然後與第二個元素進行交換。3.以此類推,直到所有元素均排序完畢。pu...