| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 714 人关注过本帖
标题:一个较简单有关数姐的问题
只看楼主 加入收藏
seep666
Rank: 2
等 级:论坛游民
帖 子:91
专家分:14
注 册:2010-3-18
结帖率:62.07%
收藏
已结贴  问题点数:20 回复次数:6 
一个较简单有关数姐的问题
输入若个有序数放在数组中,然后输入一个数,插入序数列中,插入后数组中的数仍然有序
  我想问下各位大哥们:怎么判断插的数是在最前面,中间,还是后面,更不知道从何下笔
如果题目是指定插在哪个位置我还知道做,现在都不知道怎么下手,求教,帮忙,先谢谢!
搜索更多相关主题的帖子: 大哥 
2010-07-29 16:04
kingsroot
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:284
专家分:1159
注 册:2010-3-28
收藏
得分:4 
方法一、笨方法  从头判断,当出现插入数大于前一个数但是小于后一个数 就在这个位置插入
方法二、稍微好点的办法  采用二分法  进行判断 并插入
还有更好的方法,但是对于练习 没必要了
2010-07-29 16:13
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
收藏
得分:0 
这就是插入排序,先给个思路,后给代码:
介绍:
有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外,而第二部分就只包含这一个元素。在第一部分排序后,再把这个最后元素插入到此刻已是有序的第一部分里的位置。
思路:
将n个元素的数列分为已有序和无序两个部分,如下所示:   {,{a2,a3,a4,…,an}}   {{a1(1),a2(1)},{a3(1),a4(1) …,an(1)}}   …   {{a1(n-1),a2(n-1) ,…}, {an(n-1)}}   每次处理就是将无序数列的第一个元素与有序数列的元素从后往前逐个进行比较,找出插入位置,将该元素插入到有序数列的合适位置中。
步骤:
1.从有序数列和无序数列{a2,a3,…,an}开始进行排序;   2.处理第i个元素时(i=2,3,…,n) , 数列{a1,a2,…,ai-1}是已有序的,而数列{ai,ai+1,…,an}是无序的。用ai与ai-1,a i-2,…,a1进行比较,找出合适的位置将ai插入;   3.重复第二步,共进行n-1次插入处理,数列全部有序。
代码:
 void InsertSort(char array[],unsigned int n)
   {   int i,j;   int temp;   for(i=1;i<n;i++)
  {   temp = array;//store the original sorted array in temp
  for(j=i ; j>0 && temp < array[j-1] ; j--)//compare the new array with temp
  {   array[j]=array[j-1];//all larger elements are moved one pot to the right   }  
 array[j]=temp;   
}  
 }

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-07-29 16:22
qingmeisu200
Rank: 4
等 级:业余侠客
帖 子:113
专家分:215
注 册:2010-3-16
收藏
得分:4 
我怎么看这标题是 数‘姐’ 呢?

我能!
2010-07-29 16:41
staythink
Rank: 2
等 级:论坛游民
帖 子:42
专家分:50
注 册:2010-7-26
收藏
得分:4 
回复 4楼 qingmeisu200
顶!

be a progammer,instead of a coder~
2010-07-29 17:00
encounter
Rank: 5Rank: 5
来 自:扬州
等 级:职业侠客
威 望:2
帖 子:150
专家分:359
注 册:2010-7-24
收藏
得分:4 
int a[nElems]

if(nElems == 0)

  {

  return 0;

  }



 int lowerBound = 0;
int upperBound = nElems - 1;
 int curIn;
while(1)

  {

  curIn = (lowerBound + upperBound) / 2;

  if(a[curIn] > searchKey)

  {

  upperBound = curIn - 1;

  if(lowerBound > upperBound)

  {

  return curIn;

  }

  }

  else if(a[curIn] < searchKey)

  {

  lowerBound = curIn + 1;

  if(lowerBound > upperBound)

  {

  return lowerBound;

  }

  }

  }

  }



ping   nbtstat   netstat   tracert    nat   at    ftp   telnet..................
2010-07-29 17:17
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
收藏
得分:4 
“数姐”

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-07-29 20:03
快速回复:一个较简单有关数姐的问题
数据加载中...
 
   



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

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