zoukankan      html  css  js  c++  java
  • 排序问题

    排序问题

    Time Limit: 1000MS Memory limit: 65536K

    题目描述

    输入10个整数,将它们从小到大排序后输出,并给出现在每个元素在原来序列中的位置。

    输入

    输入数据有一行,包含10个整数,用空格分开。

    输出

    输出数据有两行,第一行为排序后的序列,第二行为排序后各个元素在原来序列中的位置。

    示例输入

    1 2 3 5 4 6 8 9 10 7

    示例输出

    1 2 3 4 5 6 7 8 9 10
    1 2 3 5 4 6 10 7 8 9

    源码(用结构体):

    #include <stdio.h>
    struct data
    {
    	int n;//数值
    	int cur;//位置
    };
    
    int main()
    {
    	struct data arr[10];//C语言中必须用要写struct。。不然GCC是不会通过的。。
    	struct data t;
    	int i,j;
    	for(i=0; i<10; i++)
    	{
    		scanf("%d",&arr[i]);//输入数值
    		arr[i].cur=i+1;//保持位置序号
    	}
    	for(i=0; i<10-1; i++)
    	{
    		for(j=0; j<10-i-1; j++)
    		{
    			if(arr[j].n > arr[j+1].n)
    			{	
    				t=arr[j];
    				arr[j]=arr[j+1];
    				arr[j+1]=t;
    			}
    		}
    	}
    	for(i=0; i<10; i++)
    	{
    		if( i != 0 )
    			printf(" %d",arr[i].n);
    		else
    			printf("%d",arr[i].n);
    	}
    	putchar('\n');
    	for(i=0; i<10; i++)
    	{
    		if(i != 0)
    			printf(" %d",arr[i].cur);
    		else
    			printf("%d",arr[i].cur);
    	}
    	putchar('\n');
    	return 0;
    }
    


    或者(用两个数组):

    #include <stdio.h>
    
    int main()
    {
    	int arr1[10],arr2[10];//arr1[10]用来存储数值,arr2[10]用来存储位置
    	int t;
    	int i,j;
    	for(i=0; i<10; i++)
    	{
    		scanf("%d",&arr1[i]);//输入数值
    		arr2[i]=i+1;//保持位置序号
    	}
    	for(i=0; i<10-1; i++)//冒泡
    	{
    		for(j=0; j<10-i-1; j++)
    		{
    			if(arr1[j] > arr1[j+1])
    			{	
    				t=arr1[j];
    				arr1[j]=arr1[j+1];
    				arr1[j+1]=t;
    
    				t=arr2[j];
    				arr2[j]=arr2[j+1];
    				arr2[j+1]=t;
    			}
    		}
    	}
    	for(i=0; i<10; i++)//输出
    	{
    		if( i != 0 )//AC对输出格式好像非常严格。。。
    			printf(" %d",arr1[i]);
    		else
    			printf("%d",arr1[i]);
    	}
    	putchar('\n');
    	for(i=0; i<10; i++)
    	{
    		if(i != 0)
    			printf(" %d",arr2[i]);
    		else
    			printf("%d",arr2[i]);
    	}
    	putchar('\n');
    	return 0;
    }
    






  • 相关阅读:
    HDU 5115 Dire Wolf (区间DP)
    HDU 4283 You Are the One(区间DP(最优出栈顺序))
    ZOJ 3469 Food Delivery(区间DP好题)
    LightOJ 1422 Halloween Costumes(区间DP)
    POJ 1651 Multiplication Puzzle(区间DP)
    NYOJ 石子合并(一)(区间DP)
    POJ 2955 Brackets(括号匹配一)
    POJ 1141 Brackets Sequence(括号匹配二)
    ZOJ 3537 Cake(凸包+区间DP)
    Graham求凸包模板
  • 原文地址:https://www.cnblogs.com/tanhehe/p/2883531.html
Copyright © 2011-2022 走看看