写一个函数int Func(int* A, int nSize), 使A把0移至后面,非0整数移至数组前面 并保持有序,返回值为原数据中第一个元素为0的下标。
来源:互联网 发布:手机暗黑类游戏 知乎 编辑:程序博客网 时间:2024/05/29 17:23
/**int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),使A把0移至后面,非0整数移至数组前面并保持有序,返回值为原数据中第一个元素为0的下标。(尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路)*///设计思路:首先,将0元素置后;然后对非0元素快速排序#include "stdio.h"#include "stdlib.h"#include "assert.h"//将0元素放置于数组尾部int end_zeros( int* A, int nSize ){assert(A != NULL);int end = nSize-1;//不能i<=endfor(int i=0; i<end; i++){if(A[i]==0){//找到尾部不为0的元素位置while(A[end]==0) end--;//将0元素放置于数组尾部int t = A[end];A[end] = A[i];A[i] = t;}}return end;//返回值为原数据中第一个元素为0的下标}/*** * 快速排序* 两向*/int Funk(int* A, int nSize){assert(A != NULL);if(nSize<2) return 0;int split = A[0];//best randomint i=1;int j=nSize-1;//需要取等号---{10 9},A[0]=10,i指9,j也指9,i=j=1 A[0]和A[i-1]交换,必须执行一次i++while(i<=j){//从左往右找到大于split的元素while(A[i]<=split) i++;//从右往左找到小于split的元素while(A[j]>split) j--;if(i<j){//大的放右边,小的不变int t = A[i];A[i] = A[j];A[j] = t;i++;j--;}}int t = A[i-1];//此时i所指元素大于split,而i-1所指元素小于splitA[i-1] = A[0];//有序A[0] = t;for(int n=0; n<nSize; n++){printf("%d ",A[n]);}printf("\n");Funk(A, i-1);//0:(i-2)Funk(A+i, nSize-i);//i:(nSize-1) return 0;}int Func(int* A, int nSize){//将0元素放置于数组尾部int res = end_zeros( A, nSize );//非0元素进行排序 Funk(A, res);return res;//返回值为原数据中第一个元素为0的下标}int main(){int A[10]={2,0,6,0,7,8,1,9,10,0};int res = Func(A, 10);for(int n=0; n<10; n++){printf("%d ",A[n]);}printf("\n");printf("res = %d \n",res);return 0;}
- 写一个函数int Func(int* A, int nSize), 使A把0移至后面,非0整数移至数组前面 并保持有序,返回值为原数据中第一个元素为0的下标。
- int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),使A把0移至后面,非0整数移至 数组前面并保持有序,返回值为原数据中第一个
- int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),使A把0移至后面,非0整数移至数组前面并保持有序
- int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),使A把0移至后面,非0整数移至后面
- int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),使A把0移至后面,非0整数移至
- 面试编程题---其中隐藏着若干0,其余非0整数,使A把0移至后面,非0整数移至数组前面并保持有序
- 上海华为的一道关于指针方面的编程题 int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize)
- 编写一个方法search(int a[],in x):若数组a中存在值为x的元素,则返回该元素的下标值,否则返回-1。
- 给定一个数组,数组中包含若干个0,将0移至数组前面,其余的相对顺序保持不变
- 写一个函数满足:给定一个int list a,满足a[i+1]>=a[i],给定int key,找出list a中第一个大于等于key的元素的index,无满足要求的元素则返回-1.
- 编写函数int stat(int a[],int n,int c[][2])。a指向的数组中保存了由n个1位整数组成的数列(n为偶数)。函数从前至后依次将a数组中每两个相邻元素拼成一个不超过2位的
- 编写函数int stat(int a[],int n,int c[][2])。a指向的数组中保存了由n个1位整数组成的数列(n为偶数)。函数从前至后依次将a数组中每两个相邻元素拼成一个不超过2位的
- 201111621401-白乐乐-判断一个正整数是否为质数的算法。函数签名如下 int isPrime(long a) 输入:一个长整数a 输出:返回1(为质数),返回0(非质数)
- 二、编写函数int stat(int a[],int n,int c[][2])。a指向的数组中保存了由n个1位整数组成的数列(n为偶数)。函数从前至后依次将a数组中每两个相邻元素拼成一个不超过2位
- 编写函数int stat(int a[],int n,int c[][2])。a指向的数组中保存了由n个1位整数组成的数列(n为偶数)。函数从前至后依次将a数组中每两个相邻元素拼成一个不超过2位
- typedef int array[8]; 把array定义为有8个整数的数组类型 array a 就相当于int a[8]
- 编写程序,使用指针把一个int型数组的所有元素设置为0
- 编写函数int stat(int a[],int n,int c[][2]).a指向的数组中保存了由n个1位整数组成的数列(n为偶数)。
- ubuntu12.04 更新源(网易163)
- 由802.11 隐藏节点引发的一些思考
- SessionID的本质
- C# dataTable分页
- java面试系列题目2------转述
- 写一个函数int Func(int* A, int nSize), 使A把0移至后面,非0整数移至数组前面 并保持有序,返回值为原数据中第一个元素为0的下标。
- 安卓监听返回键,提示用户退出
- SourceInsight 操作整理
- csapp2e 家庭作业 4.47
- 深入理解HTTP协议(转)
- Struts2+JQuery+Json实例
- 转载_创业第一年易犯的8大错误
- 关于按键
- cookie、session、sessionid 与jsessionid