对于非负整数0,1,2,....n-1,随机放入一个大小为n的一维数组中,调整元素顺序,辅助空间为O(1)
2013-08-23 09:21
375 查看
题目:
对于非负整数0,1,2,....n-1,随机放入一个大小为n的一维数组中,请用时间复杂度为O(n)的算法,把他们调整为0,1,2,3,....n-1的顺序,辅助空间为O(1),只允许用交换操作,一次只能交换两个元素位置
Code(C):
对于非负整数0,1,2,....n-1,随机放入一个大小为n的一维数组中,请用时间复杂度为O(n)的算法,把他们调整为0,1,2,3,....n-1的顺序,辅助空间为O(1),只允许用交换操作,一次只能交换两个元素位置
Code(C):
#include<stdio.h> #include<stdlib.h> void change(int *a,int len); void main() { int a[] = {10,6,9,5,2,8,4,7,1,3}; int len = sizeof(a)/sizeof(int); int i; for(i = 0;i < len;i++) printf("%d ",a[i]); printf("\n"); printf("交换后的结果为\n"); change(a,len); for(i = 0;i < len;i++) printf("%d ",a[i]); printf("\n"); } void change(int *a,int len) { int i,temp; for(i = 0;i < len;) { temp = a[i]; a[i] = a[temp-1]; a[temp-1] = temp; if(a[i] == i+1) i++; } }
相关文章推荐
- Java编程:定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后求出所有元素的最大值,最小值,平均值,和值,并输出出来。
- (2)int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),使A把0移至后面,非0整数移至数组前面并保持有序,返回值为原数据中第一个元素为0的下标。(尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路)
- 程序员面试金典——解题总结: 9.18高难度题 18.3编写一个方法,从大小为n的数组中随机选出m个整数。要求每个元素被选中的概率相同。
- loner_li 机试题 现有1~100共一百个自然数,已随机放入一个有98个元素的数组a[98]。
- 写一个函数,随机地从大小为n的数组中选取m个整数。要求每个元素被选中的概率相等。
- 实现一个函数,传递一个有10个已经排好序的整形元素数组(数组大小实际为11)中,将一个指定的值按顺序插入,并在main函数中将插入后的数组输出。
- 对于一个整数数组排序,按从小到大顺序排序,数组的元素个数不定
- 有n个有序的整数放在一维数组中,输入一个数,将该数放入数组合适的位置,使插入该数后,数组中的元素仍然有序;
- 给定一个数组,要求把数组内元素的顺序随机打乱,然后输出,主要是要保证效率。
- 对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。 给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。
- 定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后求出所有元素的最大值,最小值,平均值,和值,并输出出来。
- 7.9 有15个数按大小的顺序存放在一个数组中,输入一个数,要求用拆半查找法找出该数是数组中第几个元素的值。(函数的方法)
- 一个大小为n的数组,里面的数都属于范围[0, n-1],有不确定的重复元素,找到至少一个重复元素,要求O(1)空间和O(n)时间。
- 定义一个int型的一维数组,包含40个元素,用来存储每个学员的成绩,循环产生40个 0~100之间的随机整数,将它们存储到一维数组中,
- 有序整型数组A,大小为n,请给出一个O(n)的算法,删除重复元素,O(1)空间
- 给定一个数组,该数组存贮R,G,B三种字符,将该数组按RGB顺序排序,不能使用辅助内存空间,且只能遍历数组一次。
- 谷歌面试题--一个大小为n的数组,里面的数都属于范围[0, n-1],有不确定的重复元素,找到至少一个重复元素,要求O(1)空间和O(n)时间
- 对于一个SIZE大小的数组,元素是[0,SIZE-1]区间内的整数,判断其中是否有重复元素
- 定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后求出所有元素的最大值,最小值,平均值,和值,并输出出来。
- 黑马程序员之C#编程基础学习笔记:将一个字符串数组的元素的顺序进行反转。