x = 0; index < 6; ++index){cout<<array[index]<<"";}cout<<endl;}选择排序#include <iostream>using namespace std;/*选择排序的基本思想是:每一轮从未排序的序列中找到最小(或最大)的元素,放到已排序序列的末尾。这样每一轮可以确定一个元素的正确位置,所以需要进行 N 轮,每轮可以确定一个元素,所以时间复杂度是 O(N^2)。*/template<typename T>void SelectionSort(T array[], int length){for (int indexI = 0; indexI < length - 1; ++indexI){// 寻找未排序部分的最小值int minIndex = indexI;for (int indexJ = indexI + 1; indexJ < length; ++indexJ){if (array[indexJ] < array[minIndex]){minIndex = indexJ;}}// 把找到的最小值放到已排序部分的末尾Swap(&array[minIndex], &array[indexI]);}}int main(){int array[6] = {2, 8, 6, 7, 5, 4};SelectionSort(array, 6);for (int index = 0; index != 6; ++index){cout<<array[index]<<"";}cout<<endl;}快速排序#include <iostream>using namespace std;/*快速排序是由 C. A. R. Hoare 在 1960 年提出的。它的基本思想是:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后分别对这两部分记录继续进行排序,以达到整个序列有序。*/template<typename T>int Partition(T array[], int low, int high){T pivot = array[high];// 选择最后一个元素作为基准T temp;int i = low - 1;for (int j = low; j < high; ++j){if (array[j] < pivot){i++;Swap(&array[i], &array[j]);}}Swap(&array[i + 1], &array[high]);return i + 1;}template<typename T>void QuickSort(T array[], int low, int high){if (low < high){int pi = Partition(array, low, high);// 对基准左边的子序列进行快速排序QuickSort(array, low, pi - 1); // 注意这里的减一操作// 对基准右边的子序列进行快速排序QuickSort(array, pi + 1, high);}}int main(){int array[6] = {2, 8, 6, 7, 5, 4};QuickSort(array, 0, 5);for (int index = 0; index != 6; ++index){cout<<array[index]<<"";}cout<<endl;}归并排序#include <iostream>using namespace std;template<typename T>void Merge(T array[],
- 粉丝: 2
- 资源: 6
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助