有1,2,……一直到n的无序数组,求排序算法,并且要求……
来源:百度知道 编辑:UC知道 时间:2024/05/22 19:33:32
有1,2,……一直到n的无序数组,求排序算法,并且要求时间复杂度为O(n),空间复杂度为O(1),使用交换,而且一次只能交换两个数。
哪位高手帮我解答一下这道题!谢谢了!
皇家救星1985 - 江湖少侠 请你说明一下你对时间和空间复杂度的计算好不好?谢谢!
哪位高手帮我解答一下这道题!谢谢了!
皇家救星1985 - 江湖少侠 请你说明一下你对时间和空间复杂度的计算好不好?谢谢!
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
#include <string.h>
int mysort(int n, int a[])
{
//这个函数就是你问题的答案
//参数n代表数组元素个数,a数组是1,2,……一直到n的无序数组
int temp;
for(int i = 0; i < n; i++)
{
temp = a[a[i] - 1];//将a[i] - 1上的数字保存到temp
a[a[i] - 1] = a[i];//将i上的数字调到正确位置a[i] - 1
a[i] = temp;//并将原来a[i] - 1位置上的数字移到i上
}
return 0;
}
int main()
{//main函数是为了测试用的,只是证明上面函数的正确,与问题无关
int array[100];
int N = 10;
printf("原始数组\n");
for(int i = 0; i < N; i++)
{
array[i] = N - i;
printf("%2d ", array[i]);
}//初始化一个测试数组
printf("\n");
mysort(N, array);
//将数组排序
printf("\n排序后的数组\n");
for(i = 0; i < N; i++)
{
printf("%2d ", array[i]);
}//输出数组
printf
有1,2,……一直到n的无序数组,求排序算法,并且要求……
一个数组有n个数,无序,找出从大到小排列在第k位的数,其中1<=k<=n,C/C++实现
有n个无序的数存放在a数组中,请将相同的那些数删得只剩下一个,输出经过删除后的数列.
求助PASCAL:有n个无序的数存放在a数组中,请将相同的那些数删得只剩下一个,输出经过删除后的数列.
称能表示成1+2+3+…+K的形式的自然数为三角数.有一个四位数N,它既是三角数,又是完全平方数.N=
已知an = log (n+1) (n+2),我们把使乘积a1a2…an为整数的数n称为“劣数”
从0,1,2,…依次一直写到1000000,那么这些数的所有数码的和是____?
从1*2*3*4一直乘到N,求末尾的0有几个,如何用PASCAL编
用数学归纳法证明(n+1)(n+2)…(n+n)=2^n*1*3*…*(2n-1)时,从n=k到n=k+1,左边需增乘的代数式是?
求n最大值,1的平方加2的平方一直加到n的平方,小于等于10000