常見幾種排序演算法的C 描述

2021-07-16 22:23:24 字數 2234 閱讀 7030

}

//注意如果採取的是三數中值分割法的時候需要,將頭,中,尾的三個值中間的轉移到陣列的頭部。這樣來進行partition

void quicksort(vector

& arr, int start, int end)

void bubblesort(vector

& arr)}}

void shellsort(vector

& arr)

arr[j] = tmp;}}

}

int up(int i)

int down(int i)

//新增資料用

void minheapfixup(vector

& arr, int i)//i代表插入的位置

arr[i] = tmp;

}//刪除資料用,實際上是通過刪除操作來調整堆

void minheapfixdown(vector

& arr, int i, int n)

arr[i] = tmp;

}void makeheap(vector

& arr)

}void heapsort(vector

& arr)//最小堆得到降序排序

}

void merge(vector

& arr, vector

& copy, int start, int mid, int end)

while (p <= mid)

copy[i++] = arr[p++];

while (q <= end)

copy[i++] = arr[q++];

while (start <= end)

}void mergesort(vector

& arr, vector

& copy, int start, int end)

}void mergesort(vector

& arr)

void selectsort(vector

& vec)

swap(vec[i], vec[minpos]);}}

public

class radixsort ; // 本例項中的最大數是百位數,所以只要到100就可以了

return ((x / a[d]) % 10);

}public

void

radixsort(int list, int begin, int end, int digit)

// 統計各個桶將要裝入的資料個數

for (i = begin; i <= end; i++)

// count[i]表示第i個桶的右邊界索引

for (i = 1; i < radix; i++)

// 將資料依次裝入桶中

// 這裡要從右向左掃瞄,保證排序穩定性

for (i = end; i >= begin; i--)

// 將已分配好的桶中資料再倒出來,此時已是對應當前位數有序的表

for (i = begin, j = 0; i <= end; i++, j++) }}

public

int sort(int list)

// 列印完整序列

public

void

printall(int list)

system.out.println();

}public

static

void

main(string args) ;

radixsort radix = new radixsort();

system.out.print("排序前:\t\t");

radix.printall(array);

radix.sort(array);

system.out.print("排序後:\t\t");

radix.printall(array);}}

幾種常見的排序演算法(C

說到排序,網上一搜就有一大堆的部落格資料,涵蓋各種語言實現,而許多演算法書中更是寫的很詳細,寫此部落格只是記錄下所敲的這幾行 以便日後檢視。直接貼domo ifndef sort h define sort h include include using namespace std template...

幾種常見的排序演算法c 實現

一 選擇排序 演算法思想 對於有n個元素的陣列,一共有n躺排序,每趟排序要保證前i ii項元素已經排好序,對於第i ii趟排序,從第i ii個元素開始遍歷陣列,將當前遍歷元素中最小的值與第i個元素交換。具體 實現如下 include include include using namespace s...

幾種常見排序演算法

幾種常見排序演算法 1氣泡排序 bubble sort 氣泡排序思路 將序列當中的左右元素,依次比較,保證右邊的元素始終大於左邊的元素 第一輪結束後,序列最後乙個元素一定是當前序列的最大值 對序列當中剩下的n 1個元素再次執行步驟1。3.對於長度為n的序列,一共需要執行n 1輪比較 實現 for i...