|
发表于 2018-12-25 11:10:03
|
显示全部楼层
如果你自己知道函数实现什么功能,怎么实现。可以自定义一个头文件,把要实现的函数放在自定义文件里。
例如下面是我自己写的几个排序的函数。放在了sort.h头文件中。
- void InsertSort(int a[], int length) //插入排序
- {
- for (int i = 1; i < length; i++)
- {
- int key = a[i];
- if (a[i] < a[i - 1])
- {
- int j = i - 1;
- while (a[j] > key &&j >= 0)
- {
- a[j + 1] = a[j];
- j--;
- }
- a[j + 1] = key; //插入key值;
- }
- }
- }
- void RevInsertSort(int a[], int length) //插入排序降序输出
- {
- for (int i = 1; i < length; i++)
- {
- int key = a[i];
- if (a[i] > a[i - 1])
- {
- int j = i - 1;
- while (a[j] < key &&j >= 0)
- {
- a[j + 1] = a[j];
- j--;
- }
- a[j + 1] = key; //插入key值;
- }
- }
- }
- void SelectSort(int a[], int length) //选择排序
- {
- for (int i = 0; i < length; i++)
- {
- int min = i;
- for (int j = i; j < length; j++)
- {
- if (a[j] < a[min])
- {
- min = j;
- }
- }
- int temp = a[min];
- a[min] = a[i];
- a[i] = temp;
- }
- }
- void RevSelectSort(int a[], int length) //降序输出
- {
- for (int i = 0; i < length; i++)
- {
- int max = i;
- for (int j = i; j < length; j++)
- {
- if (a[j] > a[max])
- {
- max = j;
- }
- }
- int temp = a[max];
- a[max] = a[i];
- a[i] = temp;
- }
- }
- void Merge(int a[], int start, int end) //归并函数的实现
- {
- if (end - start == 1)
- {
- if (a[start] > a[end])
- {
- int T = a[start];
- a[start] = a[end];
- a[end] = T;
- }
- }
- else if (end - start > 1)
- {
- int middle = (start + end) / 2;
- int num_l = middle - start + 1;
- int num_r = end - middle;
- int *L = new int[num_l];
- for (int i = 0; i < num_l; i++)
- {
- L[i] = a[start + i];
- }
- int *R = new int[num_r];
- for (int i = 0; i < num_r; i++)
- {
- R[i] = a[middle + 1 + i];
- }
- L[num_l] = 999999;
- R[num_r] = 999999;
- int i = 0, j = 0, k = start;
- while (k < end + 1)
- {
- if (L[i] < R[j])
- {
- a[k] = L[i];
- k++;
- i++;
- }
- else
- {
- a[k] = R[j];
- k++;
- j++;
- }
- }
- }
- }
- void MergeSort(int a[], int start, int end) //归并排序
- {
- if (start != end)
- {
- int middle = (start + end) / 2;
- MergeSort(a, start, middle);
- MergeSort(a, middle + 1, end);
- Merge(a, start, end);
- }
- }
复制代码
在主程序中就可以调用了:
#include<iostream>
#include"Sort.h" //调用自定义的头文件;
using namespace std;
int main()
{
int a[10] = { 3,1,4,2,6,5,10,7,9,8 };
int length = 10;
//InsertSort(a, length);
//RevSelectSort(a, 10);
MergeSort(a, 0, 9);
for (int i = 0; i < 10; i++)
{
cout << a[i] << endl;
}
system("pause");
return 0;
} |
|