#include<stdio.h>
int a[100];
int main()
{
int i,b,t,j;
scanf("%d",&b);
for(i=1;i<=b;i++)
{
scanf("%d",&a[i]);
}
for (i=0;i<b;i++)
for(j=0;j<b-i;j++)
if(a[j]>a[j+1])
{
t=a[j+1];
a[j+1]=a[j];
a[j]=t;
}
for(i=1;i<=b;i++)
printf("%d",a[i]);
return 0;
}
你的代码有很多问题:
int *a = (int*)malloc(sizeof(int)*n);
);冒泡排序?参见这段代码:
int* MySort(int* arr, int arrLen, int* returnSize ) {
// write code here
if (!arr || arrLen <= 1) return arr;
for (int i = 0; i < arrLen - 1; i++) {
for (int j = 1; j < arrLen - i; j++) {
if (arr[j] < arr[j-1]) {
int temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
}
}
}
if (returnSize) *returnSize = arrLen;
return arr;
}
备注:冒泡排序时间复杂度O(n*n),达不到题目要求的O(nlogn)
修改如下,供参考:
#include<stdio.h>
int a[100];
int main()
{
int i,b,t,j;
scanf("%d",&b);
if(b<=0 || b>=100) b=10; //修改
for(i=0;i<b;i++) //for(i=1;i<=b;i++) 修改
{
scanf("%d",&a[i]);
}
for (i=0;i<b-1;i++){ //for (i=0;i<b;i++) 修改
for(j=0;j<b-i-1;j++) //for(j=0;j<b-i;j++) 修改
if(a[j]>a[j+1])
{
t=a[j+1];
a[j+1]=a[j];
a[j]=t;
}
}
for(i=0;i<b;i++) //for(i=1;i<=b;i++) 修改
printf(" %d",a[i]);
return 0;
}