查看單個文章
  #5  
舊 2014-02-13, 09:24 PM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 23,016
預設

十分感謝各位。

果然是有公式的,數學不學好還真是不行啊,我抽象觀念差,光靠想的真的想不出來,後來自己用指頭算



但以下這個程式寫法,我就是搞不懂紅藍字的部份,why它會如此寫 ?

代碼:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	
	int item[100];
	int a,b,t;
	int count;
	
	printf("how many numbers? \n");
	scanf("%d",&count);
		for(a=0;a<count;a++) 	scanf("%d", &item[a]);
	
	for(a=1;a<count;a++)
	  for(b=count-1;b>=a;b--)
	  {
	  	if (item[b-1]>item[b]) {
	  		t=item[b-1];
	  		item[b-1]=item[b];
	  		item[b]=t;
	  	}
	  }
	  for(t=0;t<count;t++) printf("%d\n",item[t]);
	  return 0;
	}
假設我要將十個數字排序,紅字的地方顯然是從1開始而小於count(10)就是只從1到9,算9次而已。

這樣說吧,剛開始a=1,b=count-1就是從9開始往下減,最後減到>=a就是減到1,可是陣列的第一個元素排序不是0嗎?最前面那個就不比了嗎?
__________________
咖啡走路
微博


您是網站站長嗎?歡迎到站長俱樂部 一起討論吧。
按我看版規
code.club
回覆時引用此篇文章