将数列中的非零值移至开始(保持原来的顺序不变),而零值移至末尾
来源:互联网 发布:冠能狗粮网络代理 编辑:程序博客网 时间:2024/06/04 18:50
有若干数据,现需进行重新排序,排序的规则是:将其中的非零值移至开始(保持原来的顺序不变),而零值移至末尾。
输入格式:
第一行一个整数n,表示数据的个数。
第二行n个整数,待排序的数
输出格式:
n个排好序的整数,每个整数之间以空格分割。
输入样例:
7
2 1 0-3 0 5 8
输出样例:
2 1 -3 5 8 0 0
编程要求:
该程序由两个函数main和 sort构成。
#include <stdio.h>#include <stdio.h>void sort(int a[],int n) {int i;int m=n;while(n>1) {for(i=0; i<n-1; i++) {if (a[i]==0) {intx=a[i];a[i]=a[i+1];a[i+1]=x;}}n--;}for(i=0; i<m; i++) {printf("%d",a[i]);if(i!=m-1) printf(" ");}}int main() {int n,i ;scanf("%d",&n);int a[n];for(i=0; i<n; i++) {scanf("%d",&a[i]);}sort(a,n);return 0;}
#include <stdio.h>#include<malloc.h>void sort(int *p,int n) {int i,j, k,*q;q=(int *)malloc(n*sizeof(int));for (i=0,j=0,k=n-1; i<n; i++) {if(*(p+i)!=0) {*(q+j)=*(p+i);j++;} else {*(q+k)=*(p+i);k--;}}for(i=0; i<n; i++) {*(p+i)=*(q+i);free(q);}int main() {int n,i,*a;scanf("%d",&n);a=(int *)malloc(n*sizeof(int));for(i=0; i<n; i++)scanf("%d",a+i);sort(a,n);for(i=0; i<n; i++) {printf("%d",*(a+i));if(i!=n-1) printf(" ");}return 0;}
阅读全文
0 0
- 将数列中的非零值移至开始(保持原来的顺序不变),而零值移至末尾
- 将数组A中的0都移至数组末尾,将非0的移至开始(保持原来顺序)例子:1,2,0,2,3,0-->1,2,2,3,0
- 给定一个数组,数组中包含若干个0,将0移至数组前面,其余的相对顺序保持不变
- 7.将0移至末尾
- EditText将光标移至文字末尾
- 将非空单链表中的数据域值最大的那个链结点移至链表的末尾的算法
- 将游标移至文字编辑
- 将字符串中的字母倒序,数字顺序保持不变
- 给定一个数组nums,写一个函数将所有的值移动0到最后,同时保持非零元素的相对顺序不变
- 将焦点移至指定的控件或窗体
- amoeba 的文章将移至 http://amoeba.meidusa.com
- 将您的应用从Dallas CTP2 搬移至 CTP3
- 将容器中的零放在容器的后面,前面的数据顺序不变
- 写一个函数int Func(int* A, int nSize), 使A把0移至后面,非0整数移至数组前面 并保持有序,返回值为原数据中第一个元素为0的下标。
- ListBox的应用(左框中信息移至右框)
- 将栈S1中的元素复制到栈s2中,并保持顺序不变,使用额外的一个栈
- python消除序列的重复值并保持顺序不变
- sybase的 list() 移至到 mysql
- numpy知识
- android柱状图实现
- Spring中通过注解配置bean(1)
- zkCli.sh命令
- LVS:三种负载均衡方式比较(写得不错)
- 将数列中的非零值移至开始(保持原来的顺序不变),而零值移至末尾
- jsp memcached session 共享(转载)
- Java开发工具日常设置汇总
- 小问题 记录
- 解决窗口刷新闪烁
- 我的第一篇博客
- 牛客网javascript读取输入
- 神牛的养成计划---可持久化trie
- 自动化测试中对Alert, 多窗口,下拉框的处理