作为一个非计算机专业的学生,有志要从事软件编程,记录自己的学习收获!!!
SortAlgorithm.h文件
各种算法的统一声明以及相关辅助函数的声明。
#pragma once
#ifndef SORTALGORITHM_H
#define SORTALGORITHM_H
#include<vector>
#include<list>
using namespace std;
//1、冒泡排序的公共接口
void bubblesort(vector<int>&);
//2、选择排序的公共接口
void selectionsort(vector<int>&);
//3、插入排序的公共接口
void insertionsort(vector<int>&);
//4、希尔排序的公共接口
void shellsort(vector<int>&);
//5、归并排序的公共接口
void mergesort(vector<int>&);
//6、快速排序的公共接口
void quicksort(vector<int>&);
//7、堆排序排序的公共接口
void heapsort(vector<int>&);
//8、计数排序的公共接口
void countsort(vector<int>&);
//9、桶排序排序的公共接口
void bucketsort(vector<int>&);
//10、基数排序的公共接口
void radixsort(vector<int>&);
//各种排序算法中需要用到的私有辅助函数
void choosepivot(vector<int>&, int, int);
void _Mergesort(vector<int>&, int, int);
void _Quicksort(vector<int>&, int, int);
void merge(vector<int>&, int, int, int);
int partition(vector<int>&, int, int);
void exchange(vector<int>&, size_t, size_t);
void sink(vector<int>&, int, int);
void insert_bucket(list<int>&, int);
#endif // !SORTALGORITHM
SortAlgorithm.cpp文件
排序算法以及辅助函数的定义文件
#include "SortAlgorithm.h"
//各辅助函数定义
//辅助交换函数
void exchange(vector<int>& vec, size_t m, size_t n)
{
int tmp = vec[m];
vec[m] = vec[n];
vec[n] = tmp;
}
//辅助归并操作
void merge(vector<int>& vec, vector<int>& tmp, int lo, int mid, int hi)
{
int i = lo, j = mid + 1;
//tmp数组前半部分序列
for (int k = lo; k <= hi; ++k)//拷贝元素组
tmp[k] = vec[k];
for (int k = lo; k <= hi; ++k)
if (i > mid)
vec[k] = tmp[j++];
else if (j > hi)
vec[k] = tmp[i++];
else if (tmp[j] < tmp[i]