直接插入排序(C++插入排序函数)

2022-09-26 15:48

#define MAX 10

首先定义一个宏定义MXA 值为10,作为排序用到的数字。

//交换函数

void Swap(int* a, int* b)

{

int temp = *a;

*a = *b;

*b = temp;

}

这个交换函数的方法作为下面排序时遇到需要把插入到另外的一个位置的时候用到。

//输出

void PrintArray(int arr[], int length)

{

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

{

cout << arr[i] << ends;

}

cout << endl;

}

这个函数是作为输出数组时候用到的,参数为一个数组和一个int类型的length作为数组的长度,里面通过for循环逐个的把数组里面的元素进行输出。

//插入排序

void InsertSort(int arr[], int length)

{

int j;

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

{

if (arr[i] < arr[i - 1])

{

int temp = arr[i];

for (j = i - 1; j >= 0 && temp < arr[j]; j–)

{

arr[j + 1] = arr[j];

}

arr[j + 1] = temp;

}

}

}

插入排序函数两个参数分别是数组以及数组长度。

第一部分主循环以长度作为结束, i作为下标并自增逐个把数组遍历完

第二部分是比较大小,比较下标i以及i前面的元素如果成立则就是前面的元素比后面的大需要进行下面操作。

第三部分是进行元素的互换,首先前面的if条件成立的话才能进来运行第三部分否则继续往下循环,首先把下标i的元素给了临时变量temp,然后进行循环,j等于i前面的那个元素也就是比i要大的元素并且i要小于j,否则继续进行循环然后j–。

第四部分,把j赋值给j+1,也就是j就是比i要大的元素,把它赋值给j后面,然后再循环j–直到把前面所有的元素都遍历完后跳出循环,这时j+1是个空,就直接把temp赋值给j+1的下标,完成排序。


Main主函数:

void main()

{

int arr[MAX];

srand((unsigned int)time(NULL));

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

{

arr[i] = rand() % MAX;

}

PrintArray(arr, MAX); //调用输出函数

InsertSort(arr, MAX); //调用排序函数

PrintArray(arr, MAX); //调用输出函数

}

首先声明了一个整型的arr数组长度为宏定义MAX也就是10,调用函数srand来使得每次随机生成的值是不一样。

通过for循环来逐个把数组里面的元素输出,函数调用:首先调用输出未排序好的数组,在调用排序函数,再调用已经排序好的数组。

上一篇:pr安装包(pr软件删除安装包还能正常打开吗)
下一篇:eth显卡算力表(1660s挖cfx算力多少)
图文资讯
返回顶部小火箭