输入N,创建N个大小的一维数组,创建N个指针的一维数组, 不改变原来数组的情况,实现排序显示。
c的话用malloc
申请,free
释放。例如:
typedef int* dataType;
dataType* array = (dataType)malloc(N);
// TODO Something
free(array);
c++的话
typedef int* dataType;
dataType* array = new dataType[N];
// TODO Something
delete[] array;
把指针数组一一指向一维数组,然后对指针数组进行冒泡排序。
记得排序的时候只交换地址。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int arr[100];
int N;
scanf("%d", &N);
for (int i = 0; i < N; i++)
scanf("%d", &arr[i]);
int *p = (int *)malloc(sizeof(int) * N);
memcpy(p, arr, sizeof(int) * N);
for (int i = 0; i < N - 1; i++)
for (int j = 0; j < N - i - 1; j++)
{
if (p[j] > p[j + 1])
{
int t = p[j];
p[j] = p[j + 1];
p[j + 1] = t;
}
}
printf("org ");
for (int i = 0; i < N; i++)
printf("%d ", arr[i]);
printf("\ndest ");
for (int i = 0; i < N; i++)
printf("%d ", p[i]);
printf("\n");
return 0;
}