| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4981 人关注过本帖
标题:求最简方法,(写一个函数,找出数组中第K大小的数,输出数所在的位置)。例 ...
只看楼主 加入收藏
SamJj
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-9-4
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:8 
求最简方法,(写一个函数,找出数组中第K大小的数,输出数所在的位置)。例如{2,4,3,4,7},第1大的数是7,位置在4。第2大,第3大的数是4,位置在1,3
题目。。
搜索更多相关主题的帖子: 简方法 函数 位置 输出 
2010-09-04 01:41
maotai
Rank: 2
等 级:论坛游民
帖 子:5
专家分:25
注 册:2010-9-3
收藏
得分:0 
快速排序,排序同时记录每个数在原数组中的位置
2010-09-04 10:07
encounter
Rank: 5Rank: 5
来 自:扬州
等 级:职业侠客
威 望:2
帖 子:150
专家分:359
注 册:2010-7-24
收藏
得分:20 
#include<stdio.h>
#define SIZE 10
void main()
{int a[SIZE];
int K,i,j,temp;
for(i=0;i<SIZE;i++)
scanf("%d",&a[i]);
scanf(" %d",&K);


for(i=0;i<K;i++)
{
    for(j=i+1;j<SIZE;i++)
{if(a[i]<a[j])
{temp=a[j];
    a[j]=a[i];
    a[i]=temp;
}
}
}

printf("%d",a[K-1]);
}

[ 本帖最后由 encounter 于 2010-9-4 11:05 编辑 ]

ping   nbtstat   netstat   tracert    nat   at    ftp   telnet..................
2010-09-04 11:02
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:0 
用一个结构体,除了保存数据,还保存它的原来的位置,排序时,整个结构体数据进行交换
最后就知道它原来的位置了,御坂回答道

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-09-04 11:55
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
索引和指针排序, 相当排序字符串(交换指针的那一方法, 原数据位置不变)

我就是真命天子,顺我者生,逆我者死!
2010-09-04 12:02
SamJj
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-9-4
收藏
得分:0 
谢谢各位!!!
程序留下来。。
2010-09-04 12:36
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>

typedef int Item;
#define key(A) (A)
#define less(A, B) (data[A] < data[B])
#define more(A, B) (data[A] > data[B])
#define exch(A, B) {Item t = A; A = B; B = t;}
#define compexch(A, B) if (less(B, A)) exch(A, B)



int main(void)
{
    int data[10] = {1, 3, 8, 7, 9, 9, 4, 6, 8, 10};
    int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

    int i, j, min;

    for (i = 0; i < 9; i++)
    {
        min = i;
        for(j = i + 1; j <= 9; j++)
        {
            if (more(a[j], a[min]))
                min = j;
        }
        exch(a[i], a[min]);
    }
   /*
    *  自己循环下吧。
    */
    getchar();
    return 0;
}

我就是真命天子,顺我者生,逆我者死!
2010-09-11 13:10
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
//好像不怎么好用, 写一送一吧。
#include <stdio.h>
#include <stdlib.h>

typedef int* Item;
#define key(A) (A)
#define less(A, B) (*A < *B)
#define more(A, B) (*A > *B)
#define exch(A, B) {Item t = A; A = B; B = t;}
#define compexch(A, B) if (less(B, A)) exch(A, B)



int main(void)
{
    int data[10] = {1, 3, 8, 7, 9, 9, 4, 6, 8, 10};
    int* a[10] = {0};

    int i, j, min;

    for (i = 0; i < 10; i++)
    {
        a[i] = &data[i];
    }

    for (i = 0; i < 9; i++)
    {
        min = i;
        for(j = i + 1; j <= 9; j++)
        {
            if (more(a[j], a[min]))
                min = j;
        }
        exch(a[i], a[min]);
    }

    for (i = 0; i < 10; i++)
    {
        printf("%d ", *a[i]);
    }
    getchar();
    return 0;
}


[ 本帖最后由 BlueGuy 于 2010-9-11 13:28 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2010-09-11 13:26
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
冲着这个标题这么长进来看了下,友情up

/images/2011/147787/2011051411021524.jpg" border="0" />
2010-09-11 13:55
快速回复:求最简方法,(写一个函数,找出数组中第K大小的数,输出数所在的位置 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022323 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved