zoukankan      html  css  js  c++  java
  • 题目1167:数组排序

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:2897

    解决:903

    题目描述:

    输入一个数组的值,求出各个值从小到大排序后的次序。

    输入:

    输入有多组数据。
    每组输入的第一个数为数组的长度n(1<=n<=10000),后面的数为数组中的值,以空格分割。

    输出:

    各输入的值按从小到大排列的次序(最后一个数字后面没有空格)。

    样例输入:
    4
    -3 75 12 -3
    样例输出:
    1 3 2 1
    来源:
    2009年北京航空航天大学计算机研究生机试真题
    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    
    int array[10010];
    int array1[10010];
    int array2[10010];
    int Search (int a[], int n,int x)//二分查找
    {
    	int left=0,right=n-1;
    	while (left<=right)
    	{
    		int middle=(left+right)/2;
    		if (a[middle]==x)
    			return middle+1;
    		else if (a[middle]<x)
    			left=middle+1;
    		else 
    			right=middle-1;
    	}
    }
    int main()
    {
    	int length,i;
    	while(scanf ("%d",&length)!=EOF)
    	{
    		for (i=0;i<length;i++)
    		{
    			scanf ("%d",array+i);
    			array1[i]=array[i];
    		}
    		sort (array1,array1+length);
    		
    		int k=0;
    		for (i=0;i<length-1;i++)//数组去重
    		{
    			if (array1[i]!=array1[i+1])
    				array2[k++]=array1[i];
    		}
    		array2[k++]=array1[length-1];
    		
    		for (i=0;i<length;i++)
    		{
    			if (i!=length-1)
    				printf("%d ",Search(array2,k,array[i]));
    			else
    				printf("%d\n",Search(array2,k,array[i]));
    		}
    	}
    	return 0;
    }


     

  • 相关阅读:
    arm单板上移植gdb
    video on web
    chromium源码阅读
    CE-HTML简介
    multi-tap
    DPDK 网卡RSS(receive side scaling)简介
    c语言实现带LRU机制的哈希表
    Linux TCP协议使用的变量
    scp源码浅析
    Linux e1000e网卡驱动
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3050619.html
Copyright © 2011-2022 走看看