#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
#define SIZE 100
int** pointerSort(int* arr, unsigned int size, int ascend_flag);
void ptrMerge(int arr[], int start, int mid, int end, int* ptrArr[],int flag);
void pmergeSort(int arr[], int start, int end, int* ptrArr[], int flag);
void main()
{
unsigned int size, i;
int arr[SIZE];
int** pointers;
int ascend_flag;
printf("Please enter the number of items:\n");
scanf("%u", &size);
for (i = 0; i < size; i++)
scanf("%d", &arr[i]);
scanf("%d", &ascend_flag);
pointers = pointerSort(arr, size, ascend_flag);
printf("The sorted array:\n"); //Print the sorted array
//printPointers(pointers, size);
for (i = 0; i < size; i++)
printf("d%\t%d", *pointers[i], pointers[i]);
free(pointers);
}
int** pointerSort(int* arr, unsigned int size, int ascend_flag)
{
int** sortedArr;
sortedArr = (int**)malloc(size * sizeof(int*));
pmergeSort(arr,0,size-1,sortedArr,ascend_flag);
return sortedArr;
}
void pmergeSort(int arr[], int start, int end, int* ptrArr[],int flag)
{
if(start<end)
{
int mid = (start + end) / 2;
pmergeSort(arr, start, mid, ptrArr,flag);
pmergeSort(arr, mid+1, end, ptrArr,flag);
ptrMerge(arr, start, mid, end, ptrArr,flag);
}
}
void ptrMerge(int arr[], int start, int mid, int end, int* ptrArr[],int flag)
{
int i, k = 0;;
int p = start, q = mid + 1;
int** tempArr;
tempArr = (int**)malloc((end - start + 1) * sizeof(int*));
for (i = start; i <= end; i++)
{
if (arr[p] < arr[q])
{
tempArr[k] = &arr[p];
k++;
p++;
}
else //(arr[p] > arr[q])
{
tempArr[k] = &arr[q];
k++;
q++;
}
}
while (p <= mid)
{
tempArr[k] = &arr[p];
k++;
p++;
}
while (q <= end)
{
tempArr[k] = &arr[q];
k++;
p++;
}
if (flag == 1)
{
for (i = 0; i < k; i++)
{
ptrArr[start] = tempArr[i];
start++;
}
}
else
{
for (i = k-1; i >= start; i--)
{
ptrArr[start] = tempArr[i];
start++;
}
}
for (i = 0; i < k; i++)
printf("%x\t%d\n", ptrArr[i], *ptrArr[i]);
printf("\n");
free(tempArr);
}
所以我从学校开始就被要求编写一个函数,该函数获取一个int“ size”参数,一个整数数组和一个int标志,并返回一个指针数组,该指针数组保存指向...单元格的指针。 >
Ex: