八大排序演算法的C 實現

2021-07-03 15:25:27 字數 3037 閱讀 4414

#include "stdafx.h"

#include#include#include #include using namespace std;

void print(vectornumv)//輸出陣列

numv.at(j+1)=v;

} return numv;

} vectorselectionsort(vectornumv)//選擇排序

int a = numv.at(i);

numv.at(i) = numv.at(min);

numv.at(min) = a;

} return numv;

} vectorbubblesort(vectornumv)

} }

return numv;

} vectormerge2(vectornb,vectornc);

vectormergesort(vectornumv)

for(int i = size/2;i <=size-1;i++)

numb = mergesort(numb);

numc = mergesort(numc);

numv = merge2(numb,numc);

return numv;

} } vectormerge2(vectornb,vectornc)//合併

else

} if(i == nb.size())

} else

} return na;

} struct pare;

pare partition(vectornumv,int i,int j);

vectorquicksort(vectornumv,int i,int j)//快速排序

else if(size == 2)

return numv;

} else

} pare partition(vectornumv,int i,int j)//分割槽

if(numv.at(i) > p)i--;

int a = numv.at(i);

numv.at(i) = p;

numv.at(l) = a;

pare par;

par.numv = numv;

par.s = i;

return par;

} vectorquicksort(vectornumv)

class heap//二叉堆

} void pdown(int x)

} public:

heap()

heap(vectornuin)

} bool isempty()

};

vectorheapsort(vectornumv)

return num;

} vectorshell_sort(vectornumv)

numv.at(j + h) = v;

} } }

return numv;

}int find_max(vectornumv)//找出陣列中最大的數

} return max;

}int digit_num(int num)

while (num != 0);

return digit;

}int kth_digit(int number,int kth)

number = number % 10;

return number;

}vectorradix_sort(vectornumv)//基數排序

//基數排序參考了《c和c++程式設計師面試秘笈》人民郵電出版社

; int * temp[10];

for (int i = 0;i < 10;i++)

for (int i = 0;i < max_digit;i++)

int index = 0;

for (int j = 0;j < 10;j++)

}} return numv;

}int _tmain(int argc, _tchar* argv)

random_shuffle(number.begin(),number.end());//生成亂序的1到n的數

vectornumber1;

print(number);

cout << "插入排序" << endl;

number1 = insertionsort(number);

print(number1);

cout << "選擇排序" << endl;

number1 = selectionsort(number);

print(number1);

cout << "氣泡排序" << endl;

number1 = bubblesort(number);

print(number1);

cout << "歸併排序" << endl;

number1 = mergesort(number);

print(number1);

cout << "快速排序" << endl;

number1 = quicksort(number);

print(number1);

cout << "堆排序" << endl;

number1 = heapsort(number);

print(number1);

cout << "希爾排序" << endl;

number1=shell_sort(number);

print(number1);

cout << "基數排序" << endl;

number1=radix_sort(number);

print(number1);

return 0;

}

八大排序演算法

1.直接插入排序 原理 將陣列分為無序區和有序區兩個區,然後不斷將無序區的第乙個元素按大小順序插入到有序區中去,最終將所有無序區元素都移動到有序區完成排序。要點 設立哨兵,作為臨時儲存和判斷陣列邊界之用。實現 void insertsort node l,int length void shell ...

八大排序演算法

一 概述 八大排序演算法包括 1 插入排序之直接插入排序 straight insertion sort 2 插入排序之希爾排序 shells sort 3 選擇排序之簡單選擇排序 selection sort 4 選擇排序之堆排序 heap sort 5 交換排序之氣泡排序 bubble sort...

八大排序演算法

排序的定義 輸入 n個數 a1,a2,a3,an 輸出 n個數的排列 a1 a2 a3 an 使得a1 a2 a3 an in place sort 不占用額外記憶體或占用常數的記憶體 插入排序 選擇排序 氣泡排序 堆排序 快速排序。out place sort 歸併排序 計數排序 基數排序 桶排序...