用自建的函数给数组排序

来源:互联网 发布:乒乓球 知乎 编辑:程序博客网 时间:2024/06/08 05:28

目的:

不使用algorithm库里的sort函数,自建函数给数组排序,包括从大到小,或者从小到大

这里用了设计了三个函数,一个是只管把数组从小到大排序,一个是只管从大到小排序,第三个函数是增加一个参数,可以用它来对数组做两种排序

#include <iostream>#include <string>using namespace std;template <class type>void sortArraytoBigger(type a[], int size) //把函数从小到大排列{type temp;for (int k = 1; k <= size; ++k){for (int i = 0; i <= size - 2; ++i){if (a[i] > a[i + 1]){temp = a[i]; a[i] = a[i + 1]; a[i + 1] = temp;//利用两个for循环,利用交换功能把数组中的位置相互交换。这行也可以用swap函数}}}}template <class type>void sortArraytoSmaller(type a[], int size) //把函数从大到小排列{type temp;for (int k = 1; k <= size; ++k){for (int i = 0; i <= size - 2; ++i){if (a[i] < a[i + 1]) //只有这行和前面不同{temp = a[i]; a[i] = a[i + 1]; a[i + 1] = temp;}}}}template <class type>void sort(type a[], int size, bool sequence) //函数排序,第三个参数用来判断是从小到大,还是从大到小{type temp;for (int k = 1; k <= size; ++k){for (int i = 0; i <= size - 2; ++i){if (sequence == true) //从小到大排序{if (a[i] > a[i + 1]) {temp = a[i]; a[i] = a[i + 1]; a[i + 1] = temp;}}else if (a[i] < a[i + 1]) //从大到小排序{temp = a[i]; a[i] = a[i + 1]; a[i + 1] = temp;}}}}template <class Type>//做成模板,用于各种类型的数组。使用模板只要增加这一行,并改动下面相应的class类型即可  void printArray(Type A[], int size) //参数是数组名和数组的长度  {for (int i = 0; i < size; i++)cout << A[i] << " ";cout << endl;}int main(){string test[] = { "w", "a", "t", "e", "r"};//用string数组试验printArray(test, 5);sortArraytoBigger(test, 5); //用第一个函数 从小到大排序printArray(test, 5);sortArraytoSmaller(test, 5);//用第二个函数 从大到小排序printArray(test, 5);sort(test, 5, true); //用第三个函数,从小到大排序printArray(test, 5);sort(test, 5, false); //用第三个函数,从大到小排序printArray(test, 5);system("pause");return EXIT_SUCCESS;}

编程收获:

1. 如果不利用其它函数,对数组自身做排序,可以用swap方法

2. 为了减少代码重复,可以增加一个函数参数,把几个功能的函数合并成同一个函数

运行结果:





0 0