我有一个c++函数,参数是int* NumList ,请使用InsertSort算法排序
时间: 2023-05-21 14:04:34 浏览: 85
好的,以下是一个使用插入排序算法的 C 函数,可以将 int 数组按照升序排列:
```
void InsertionSort(int* NumList, int length) {
int i, j, temp;
for (i = 1; i < length; i++) {
j = i - 1;
temp = NumList[i];
while (j >= 0 && NumList[j] > temp) {
NumList[j + 1] = NumList[j];
j--;
}
NumList[j + 1] = temp;
}
}
```
该函数中,NumList 表示需要排序的 int 数组的指针,length 表示数组的长度。函数使用的是插入排序算法,对于每一个元素,将其插入到已经排序好的序列中的正确位置,最终得到一个有序序列。
您可以将您的数组传递给该函数,并在函数调用后查看您的排序结果。
相关问题
我有一个c++函数,参数是int* NumList ,请使用Merge Sort算法排序
好的,以下是基于 Merge Sort 算法对 int* NumList 进行排序的 C 函数代码:
```
void Merge(int* NumList, int iStart, int iMid, int iEnd)
{
int i, j, k;
int* TempList = (int*)malloc((iEnd-iStart+1) * sizeof(int));
i = iStart, j = iMid+1, k = 0;
while (i <= iMid && j <= iEnd) {
if (NumList[i] <= NumList[j]) {
TempList[k++] = NumList[i++];
} else {
TempList[k++] = NumList[j++];
}
}
while (i <= iMid) {
TempList[k++] = NumList[i++];
}
while (j <= iEnd) {
TempList[k++] = NumList[j++];
}
for (i = iStart, k = 0; i <= iEnd; ++i, ++k) {
NumList[i] = TempList[k];
}
free(TempList);
}
void MergeSort(int* NumList, int iStart, int iEnd)
{
if (iStart < iEnd) {
int iMid = (iStart+iEnd) / 2;
MergeSort(NumList, iStart, iMid);
MergeSort(NumList, iMid+1, iEnd);
Merge(NumList, iStart, iMid, iEnd);
}
}
void Sort(int* NumList)
{
int iLen = sizeof(NumList)/sizeof(int);
MergeSort(NumList, 0, iLen-1);
}
```
你可以将需要排序的 int 数组传递给 Sort 函数,它将按照升序排列这个数组,具体用法可以参考如下示例:
```
int main()
{
int i;
int NumList[] = {5, 3, 4, 2, 1};
Sort(NumList);
for (i = 0; i < sizeof(NumList)/sizeof(int); ++i) {
printf("%d ", NumList[i]);
}
printf("\n");
return 0;
}
```
我有一个 int* NumList 请使用BubbleSort算法排序 并计算其排序时长
好的,我可以为您提供代码和计算出排序时长。这是一个使用 BubbleSort 算法排序的 C++ 代码示例:
```
void BubbleSort(int* NumList, int Size)
{
for (int i = 0; i < Size - 1; i++)
{
for (int j = 0; j < Size - i - 1; j++)
{
if (NumList[j] > NumList[j + 1])
{
int Temp = NumList[j];
NumList[j] = NumList[j + 1];
NumList[j + 1] = Temp;
}
}
}
}
int main()
{
int NumList[] = { 9, 11, 8, 2, 5, 6 };
int Size = sizeof(NumList) / sizeof(NumList[0]);
clock_t StartTime = clock();
BubbleSort(NumList, Size);
clock_t EndTime = clock();
double SortTime = (double)(EndTime - StartTime) / CLOCKS_PER_SEC;
printf("排序所用时间为:%.8f 秒\n", SortTime);
return 0;
}
```
在这个示例中,我们使用冒泡排序算法对 NumList 数组进行排序,并使用 clock 函数计算排序所用时间。结果将打印在控制台上。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)