循環賽日程表演算法
Ⅰ 體育比賽中怎樣計算單循環的場次與輪次
摘要 你好朋友單循環比賽場數和輪次的計算方法:比賽場數的計算:比賽場次=(隊數*(隊數-1))/2 比賽輪數的計算:在循環法的比賽中,各隊都參加完一場比賽為一輪。
Ⅱ 跪求:循環日程表的分治法程序!
#include "stdio.h"
int a[10][10];
void tourna(int n)
{
if( n == 1 )
{
a[1][1] = 1;
return;
}
if (n%2!=0)
{ tourna (n+1);
return;}
tourna(n/2);
make(n);
}
make(int n)
{ if( (n/2>1) && (n%2!=0))
odd(n);
else
(n);
}
(int n)
{int i,j;
int m = n/2;
for( i = 1 ; i <= m ; i++ )
{
for( j = 1 ; j <= m ; j++ )
{
a[i][j + m] = a[i][j] + m;
a[i + m][j] = a[i][j + m];
a[i + m][j + m] = a[i][j];
}
}
}
odd(int n)
{ int m=n/2,b[100],i,j;
for ( i = 1 ; i <= m ; i++ )
b[i]=m+i;b[m+i]=b[i];
for( i = 1 ; i <= m ; i++ )
for ( j = 1 ; j <= m+1 ; j++ )
{ if (a[i][j]>m)
{ a[i][j]=b[i];a[m+i][j]=(b[i]+m)%n;}
else
a[m+i][j]=a[i][j]+m;
for ( i = 2 ; i <= m ; i++ )
a[i][m+j]=b[i+j-1];
a[b[i+j-1]][m+j]=i;
}}
main()
{ int n = 1,i,j;
int k;
scanf("%d",&n);
tourna(n);
for( i = 1 ; i <= n ; i++ )
{
for( j = 1 ; j <= n ; j++ )
{
printf("%d ", a[i][j]);
}
printf("\n");
}
}
Ⅲ 利用分治法設計循環賽日程表的演算法
直接上代碼吧~~
#include<stdio.h>
void (int n);
void tour(int n);
void make(int n);
void odd(int n);
int a[100][100];
int b[100];
int main()
{
int n,i,j;
printf("Please input n :\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
a[1][i]=i;
a[i][1]=i;
}
tour(n);
if(n % 2 == 1)
for(i=1;i<=n;i++)
{
for(j=1;j<=n+1;j++)
{
if(a[i][j] == n +1)
printf(" ");
else
printf("%-4d",a[i][j]);
}
printf("\n");;
}
else
for(i=1;i<=n;i++)
{
for(j=1;j <= n;j++)
{
if(a[i][j] == n +1)
printf(" ");
else
printf("%-4d",a[i][j]);
}
printf("\n");;
}
}
void (int n)
{
int m = n/2;
int i,j;
for(i=1;i<=m;i++)
for(j=1;j<=m;j++)
{
a[i][j+m]=a[i][j]+m;
a[i+m][j]=a[i][j+m];
a[i+m][j+m]=a[i][j];
}
}
void tour(int n)
{
if(n==1)
{
a[1][1]=1;
return;
}
if(n%2==1)//奇數
{
tour(n+1);
return;
}
tour(n/2);
make(n);
}
void make(int n)
{
if(n/2>1 && ((n/2)%2))
odd(n);
else
(n);
}
void odd(int n)
{
int i,j;
int m=n/2;
for(i=1;i<=m;i++)
{
b[i]=m+i;
b[m+i]=b[i];
}
for(i=1;i<=m;i++)
{
for(j=1;j<=m+1;j++)
{
if(a[i][j]>m)
{
a[i][j]=b[i];
a[m+i][j]=(b[i]+m)%n;
}
else
{
a[m+i][j]=a[i][j]+m;
}
}
for(j=2;j<=m;j++)
{
a[i][m+j]=b[i+j-1];
a[b[i+j-1]][m+j]=i;
}
}
}
就這個啦,希望能幫到你給分吧~~
Ⅳ 循環賽日程演算法的時間復雜度是多少
循環的次數為n*(n-1)/2,所以時間復雜度應該是n^2,即n的平方
Ⅳ (急求!)c語言設計:循環賽日程表
循環賽制不一定是n-1天,亦可能是n天.
例如: 當n=3時, 第一天:0-1 第二天 0-2 而此時,1與2還沒有比, 賽事規定: 1必須與2比賽.
/*
當n為偶數時, 分為n/2 和 n/2+1 兩組隊伍, 它們兩組之間完成循環賽事的總時間為 n/2+1天
當n為奇數時, 分為n/2 和 n/2 兩組隊伍, 它們兩組之間完成循環賽事的總時間為 n/2 天
依此來設置列印結果的遞歸.
*/
void theMatchDay(int nStart/*這一組的起始號碼*/,int nTeam/*這一組有多少人*/, int thedayprintf)
{
if(nTeam<=1)
return;
//定義甲乙兩組人數. 甲乙組之間比賽天數為nTeamB
int nTeamA = nTeam/2;
int nTeamB = nTeam - nTeamA;
if(thedayprintf>=nTeamB)
{//還要分組進行.
theMatchDay(nStart,nTeamA,thedayprintf-nTeamB);
theMatchDay(nStart+nTeamA,nTeamB,thedayprintf-nTeamB);
}
else
{
for(int i=0;i<nTeamA;i++)
{
printf("%03d-", nStart+i);
int j = i+thedayprintf;
if(j>=nTeamB) j-=nTeamB;
printf("%03d , ", j+nTeamA+nStart);
}
}
}
void printfMatch(int nteam)
{//列印賽事
for(int i=0;i<nteam;i++)
{
printf("TheDay %d : ",i);
theMatchDay(0,nteam,i);
printf("\n");
}
}
void main()
{
printfMatch(3); //亦可以為其它的.
}
Ⅵ 數據結構---網球循環賽日程表
#include<stdlib.h>
#include<stdio.h>
int **A; //int *指針數組,
int *schele; //int數組,一維數組保存二維數組的數據
int N =1; //問題的規模。初始化時會設定
//isodd:判斷x是否奇數,是則返回1,否則0
int isodd(int x)
{
return x&1;
}
//print:列印賽程
void print()
{
int i,j, row, col;
if(isodd(N))
{
row=N;
col=N+1;
}
else
{
row=N;
col=N;
}
printf("第1列是選手編號\n");
for(i=0;i<row; i++)
{
for(j=0;j<col; j++)
{
printf("%4d", A[i][j]);
}
printf("\n");
}
}
/*init:初始化,設置問題規模N值,分配內存,用schele指向;
把A構造成一個二維數組
*/
void init()
{ int i, n;
char line[100]={'\0'};
printf("請輸入選手人數:");
fgets(line,sizeof(line), stdin);
N=atoi(line);
if(N<=0) exit(-1);
if(isodd(N))
n=N+1;
else
n=N;
//schele是行化的二維數組
schele=(int *)calloc(n*n, sizeof(int));
A=(int **)calloc(n, sizeof(int *));
if(!schele || A==NULL) exit(-2);
for(i=0;i<n;i++) //把A等價為二維數組
{
A[i]=schele+i*n;
A[i][0]=i+1;//初始化這個數組的第一列
}
return;
}
/*replaceVirtual:把第m號虛的選手去掉(換做0)*/
void replaceVirtual(int m)
{
int i,j;
for(i=0;i<m-1;i++) //行:對應選手號1~m-1
{
for (j=0;j<=m;j++) //列: 比行要多1
A[i][j] = (A[i][j]==m)?0:A[i][j];
}
return;
}
/*even:m為偶數時用,由前1組的m位選手的安排,來構成第2組m位選手
的賽程安排,以及兩組之間的比賽安排 */
void even(int m)
{
if(isodd(m)) return;
int i,j;
for (j=0;j<m;j++) //1. 求第2組的安排(+m)
{
for (i=0;i<m;i++)
{
A[i+m][j]=A[i][j]+m;
}
}
for (j=m;j<2*m;j++)//兩組間比賽的安排
{
for (i=0;i<m;i++) //2. 第1組和第2組
{
A[i][j]=A[i+m][j-m]; //把左下角拷貝到右上角
}
for (i=m;i<2*m;i++) //3. 對應的,第2組和第1組
{
A[i][j]=A[i-m][j-m]; //把左上角拷貝到右下角
}
}
return;
}
/*odd:m為奇數時用,由前1組的m位選手的安排,來構成第2組m位選手
的賽程安排,以及兩組之間的比賽安排。這時和m為偶數時的
處理有區別。
*/
void odd(int m)
{
int i,j;
for (j=0;j<=m;j++) //1. 求第2組的安排(前m天)
{
for (i=0;i<m;i++)//行
{
if (A[i][j]!=0)
{
A[i+m][j]=A[i][j]+m;
}
else //特殊處理:兩個隊各有一名選手有空,安排他們比賽
{
A[i+m][j] = i+1;
A[i][j] = i+m+1;
}
}
}
///////////安排兩組選手之間的比賽(後m-1天)////////////////////////
for(i=0,j=m+1;j<2*m;j++)
{
A[i][j] = j+1; //2. 1號選手的後m-1天比賽
A[ (A[i][j] -1) ][j] = i+1; //3. 他的對手後m-1天的安排
}
//以下的取值要依賴於1號選手的安排,所以之前先安排1號的賽程
for (i=1;i<m;i++) //第1組的其他選手的後m-1天的安排
{
for (j=m+1;j<2*m;j++)
{//2. 觀察得到的規則一:向下m+1~2*m循環遞增
A[i][j] = ((A[i-1][j]+1)%m==0)?A[i-1][j]+1 :m + (A[i-1][j]+1)%m;
//3. 對應第2組的對手也要做相應的安排
A[ (A[i][j]-1) ][j] = i+1;
}
}
return;
}
/*make:當前有m位(偶數)選手,分成兩組,每組由m/2位選手構成
由第一組的m/2位選手的安排來構成第二組的比賽安排,第一
組與第二組的比賽安排。要區分m/2為奇數和偶數兩種情況
*/
void make(int m)
{
if (isodd(m/2)) //m/2為奇數
odd(m/2);
else //m/2為偶數
even(m/2);
}
void tournament(int m)
{
if(m==1)
{
A[0][0]=1;
return ;
}
else if(isodd(m)) //如果m為奇數,則m+1是偶數
{
tournament(m+1); //按照偶數個選手來求解
replaceVirtual(m+1); //然後把第m+1號虛選手置成0
return ;
}
else //m是偶數,
{
tournament(m/2); //則先安排第1組的m/2人比賽
make(m); //然後根據演算法,構造左下、右下、右上、右下的矩陣
}
return ;
}
/*endprogram:回收分配的內存*/
void endprogram()
{
free(schele);
free(A);
}
int main()
{
init(); //初始化
tournament(N);//求解
print(); //列印結果
endprogram(); //回收內存
return 0;
}
Ⅶ 淘汰賽、單循環賽和雙循環賽的計算方法分別是什麼
一、淘汰賽的計算方法:體育比賽和其它各種比賽中的一種賽制,在這種賽制中賽員兩兩相對,輸一場即淘汰出局。每一輪淘汰掉一半選手,直至產生最後的冠軍。
二、單循環賽的計算方法:所有參加比賽的隊均能相遇一次,最後按各隊在全部比賽中的積分、得失分率排列名次。
三、雙循環賽的計算方法:所有參加比賽的隊均能相遇兩次,最後按各隊在兩個循環的全部比賽中的積分、得失分率排列名次。
(7)循環賽日程表演算法擴展閱讀:
淘汰賽的其他介紹:
在單淘汰賽制中賽會組委會事先會將全部選手按預賽名次或種子順序進行編排,也支持部分種子選手直接從中間某輪開始參加比賽的安排(即輪空)。這樣做的目的是避免實力強的選手過早相遇,導致後面的比賽中對陣雙方的實力相差過於懸殊,影響比賽的懸念和精彩程度。
輪次表編排完後,各隊進行抽簽,並按各隊抽到的號碼填到輪次表裡(或按上屆比賽的名次順序確定編號),據此再編成競賽日程表。
編排競賽日程表,首先要貫徹機會均等、公平競爭的原則,當然也要適當地照顧到比賽(觀眾)的需要,可以從時間(上午、下午、晚上)、場館(大館或小館)、地區(本地或外地)等不同的方面作出調整,達到各隊大體上的平衡。
Ⅷ 演算法理解題 循環賽比賽日程表
題目好像有問題。
當n=23=8時??
應該是:n=2k=8吧!
(1)如果n=2k
循環賽需要進行(n-1)!場比賽。
至少要進行(n-1)天,因為:
①每個選手必須與其他n-1名選手比賽各一次;
②每個選手一天至多隻能賽一次;
③循環賽要在最短時間內完成。
(2)當n=2k=8時,循環賽日程表:
第1天:1-2;3-4;5-6;7-8;
第2天:1-3;2-4;5-7;6-8;
第3天:1-4;2-3;5-8;6-7;
第4天:1-5;2-6;3-7;4-8
第5天:1-6;2-7;3-8;4-5;
第6天:1-7;2-8;3-5;4-6;
第7天:1-8;2-5;3-6;4-7;
Ⅸ 籃球循環賽的循環賽項目規則
(一)循環賽的輪數
每個參賽隊賽畢一場(輪空隊除外),稱為一輪結束。計算循環賽的輪數,目的在於計劃整個比賽所需用的時間或期限,是比賽日程安排的主要依據。
其計算方法:Y=輪次數,N=參賽隊數
如果參賽隊為偶數 Y=N-1 即輪次數=參賽隊數-1
如果參賽隊為奇數,則:比賽輪數=參賽隊數。
註:雙循環賽的輪數是單循環賽輪數的加倍。
(二)循環賽的場數
循環賽的場數是指參賽隊之間互相輪流比賽全部結束的總場數。計算循環賽的比賽總場數,目的在於計劃安排人力、物力、比賽日程與場地。
其計算方法如下:
X=N×(N-1)÷2 X為比賽場數,N為參賽隊數。
單循環比賽場數=參賽隊數×(參賽隊數-1)÷2
雙循環比賽的總場數=參賽隊數×(參賽隊數-1) (一)單循環比賽順序的編排方法
1.輪次表的安排方法
單循環比賽輪次、順序的安排方法具有可變性的特徵,可以採用各種有規律的輪轉方法。不同項目根據自己的特點和需要,有時還採用特殊性的編排方法,比賽順序的變化和調動是多種多樣的。普遍採用和是逆時針旋轉法:若參賽隊(或個人)為偶數,一般都採用此法來安排各輪的比賽表。如6隊參加比賽,其第一輪比賽是先將1、2、3號自上而下依次寫在左側,再將4、5、6號自下而上與3、2、1號對應寫在右側,而後用橫線分別將左右兩個對著的號碼連起來,即為第一輪的比賽表(表1)。將第一輪比賽表中的1號固定不動,其餘號碼按逆時針方向輪轉一個位置,即為第二輪比賽表,以後各輪次依此類推。這種旋轉法的優點是比賽越臨近結束,隊與隊之間實力接近,比賽越緊張激烈。其他還有順時針旋轉法、「大旋轉、小調動」法以及其他特殊的輪轉法。
表1 6個隊單循環比賽隊 第一輪 第二輪 第三輪 第四輪 第五輪 1—6 1——5 1——4 1——3 1——2 2—5 6——4 5——3 4——2 3——6 3—4 2——3 6——2 5——6 4——5 2.單循環的抽簽定位及編排競賽日程表
(1)單循環比賽的抽簽定位方法:單循環賽根據隊數編排好輪次後,應將比賽隊安排進輪次表裡,把比賽隊安排進輪次表可以採用兩種方法。
①抽簽的方法。在對參加比賽隊的實力情況全然不知,或競賽規程規定必須抽簽時採用。抽簽是,按參賽隊數做好相應的號簽,抽到相應號碼的隊即對號入座,排入輪次表內。
②將上一年度比賽的名次作為各隊進入輪次表的代號:如第一名為1號、第二名為2號、第三名為3號,依此類推,分別對號入座。為使比賽逐步走向高潮,在最後確定比賽輪次時應盡量把實力接近的比賽靠後安排,直到比賽打到最後一輪才能確定各隊名次,這就有必要對比賽的輪次進行適當的調整。但特別要注意的是:在做比賽調整時,必須將整個輪次一起調整,即將某一輪次的所有比賽與另一輪次的所有比賽一起調整,決不能只將某輪次中的一場比賽調整到另一輪次中進行。
(2)編排比賽日程表:輪次表填好後,把各輪次的比賽編成比賽日程表(比賽的日期、場地等)印發給各隊(表2)。
表2 比賽日程表 日 期 時 間 組 別 比賽隊 場 地 (二)雙循環賽的編排方法
雙循環賽比賽輪次表的排法與單循環相同,只要排出第一循環,第二循環可按表重復一次(表3),也可重新抽簽另排位置。第二循環的比賽如何進行,應在競賽規程中明確規定。雙循環賽的輪次與場次,均為單循環的一倍。
表3 5個隊參加雙循環比賽輪次安排表 第一輪 第二輪 第三輪 第四輪 第五輪 第一循環 0——5 0——4 0——3 0——2 0——1 1——4 5——3 4——2 3——1 2——5 2——3 1——2 5——1 4——5 3——4 第二循環 0——5 0——4 0——3 0——2 0——1 1——4 5——3 4——2 3——1 2——5 2——3 1——2 5——1 4——5 3——4 (三)分組循環賽的編排方法
分組循環通常分預賽和決賽兩個階段。
1.預賽階段
按規程規定將參賽隊分為幾個小組,各組參照單循環編排,排出小組比賽表,然後確定種子隊的位置。分組循環賽一般按分組數或分組數的2倍數確定種子,若種子數與組數相等,則將種子隊分別安排在各小組的1號位置,如種子隊為組數的2倍,應採用「蛇形」排列法,將種子隊依次排列在各小組的1、2號位置上,非種子隊也應抽簽後定位。現將分組單循環賽抽簽和「蛇形」排列法介紹如下:
(1)首先在聯席會上協商確定種子隊:種子隊數一般等於組的組數。如果分4個組進行比賽,應有4個種子隊。為了使比賽更合理,也可以多選出幾個種子隊,但必須是組數的倍數。如分4個組進行比賽,可確定8個種子隊。第一號種子隊與第八號種子隊編為一組;第二號種子隊與第七號種子隊編為一組,依此類推。
(2)抽簽方法:種子隊先抽簽,確定各種子隊的組別,然後其他各隊再抽簽確定組別。例如,20個隊分為4組,除8個種子隊外,其他12個隊再抽簽。簽號分為4組,每組有相同的3個簽,由12個隊抽簽確定組別,然後再把各隊按組別填入各組的比賽輪次表中。另外一種分組方法為蛇形排列分組,即按上一屆名次進行分組。例如,有16個隊分為4個組時,其排法如表4:
表4 16個隊分4組比賽安排表 第一組 第二組 第三組 第四組 1 2 3 4 8 7 6 5 9 10 11 12 16 15 14 13 2.決賽階段
各隊在預賽階段分組單循環賽中的名次,將決定其進入決賽階段比賽的位置。在預賽階段已經相遇過的隊,比賽成績依然有效,決賽階段不再進行比賽。其常用的比賽方法有,同名次賽、分段賽、交叉賽、錄取名次賽等。
(1)同名次賽:就是將各小組預賽中相同名次編在一起進行比賽,如預賽時四個組的第一名編成一組進行單循環賽,決出1~4名,各小組的第二名編在一起決出5~8名。
(2)分段賽:將各小組的名次分為幾段,同一段名次的隊編在一組決出總名次,如預賽兩個組的1、2名編在一起決出1~4名,兩個組的3、4名,編在一起排出5~8名。
(3)交叉賽:各組的前兩名交叉比賽,兩場勝者進行決賽爭奪1、2名,兩場負者再相互比賽決出3、4名,各組3、4名用同樣方法決出5~8名,其餘類推。
(4)錄取名次賽:根據競賽規程規定的錄取名次,在各小組中取錄數量相等的隊進入決賽(參加第二階段決賽隊的數量應等於或略高於錄取名次的隊)。例如,有16個隊參賽,規定錄取前8名,預賽分成兩個組,則每組前4名的隊,進入第二階段決賽,其餘的隊不再比賽。
(四)循環比賽日程編排的注意事項
循環賽要求每個參賽隊(人)和其他參賽隊之間都要進行比賽。從比賽對象上看,保證了參加者均等的機會,但在比賽順序和比賽條件上仍存在著機會不均等的問題。如與強、弱對手相遇時間的先後問題;實力相近兩隊之間決定性比賽前,各自體力消耗多少的問題(指各自在前一場比賽對手的強弱和休息間隔時間的不均等);各參賽隊比賽進度先後不一致問題;比賽場地條件的優劣及對場地條件適應能力等問題。要做到各方面條件完全均等是不可能的,但在編排中應盡量使這些不均等因素降到最低限度,使整個比賽獲得更好效果。
特此提出下列要求和注意事項:
(1)當參賽隊呈單數時,不宜採用1號隊固定的逆時針旋轉法來編排比賽順序:目前各級各類比賽中,凡採用循環法比賽,都是以左上角1號隊為基準點固定不動,其他隊(或個人)每輪按逆時針方向依次旋轉一個位置。這種編排方法的優點是能保證每輪都有實力相近的兩個隊進行比賽;1號種子強隊所遇的對手由弱到強;最後一輪保證有1號與2號兩強相遇,比賽推向高潮。但是這種安排會造成其中某一隊連續多次遇到的對手都是前一輪輪空的隊,造成該隊以勞待逸。如有7個隊參賽時,6號隊在7輪比賽中,後4輪全部與前一輪輪空的隊進行比賽(表5),這對6號隊在體力上是不公平的。克服這一不合理現象的方法是,改為順時針旋轉法,或是固定右上角「0」號隊不轉動,其他隊則可用逆時針旋轉來進行編排。
表5 參賽隊與輪空隊比賽輪轉表 第一輪 第二輪 第三輪 第四輪 第五輪 第六輪 第七輪 1——0 1——7 1——6 1——5 1——4 1——3 1——2 2——7 0——6 7——5 6——4 5——3 4——2 3——0 3——6 2——5 0——4 7——3 6——2 5——0 4——7 4——5 3——4 2——3 0——2 7——0 6——7 5——6 (2)循環賽必須按輪次的次序逐輪進行:每一輪次中的比賽,必須全部賽畢,方可進入下一輪的比賽,這樣才能使各參賽隊的比賽進度保持一致。絕不可在前一輪比賽尚未全部結束前,讓下一輪某場次的比賽提前進行。即使因某種特殊原因,需要調整比賽時,也必須將整個輪次的所有比賽與另一輪次的全部比賽一起調動。否則會造成比賽隊休息時間的不均等,還有可能提供一種可被利用的「機會」,干擾比賽的結果。
(3)注意各隊在每場比賽結束後,有基本均等的休息時間:不同運動項目的比賽,場與場之間每隊最低限度的休息時間是不相同的。其中足球休整的間隙最長;排球、籃球、手球等次之;乒乓球等小球項目則較短。編排時應注意保證各隊的間歇時間,盡可能使比賽雙方相近,以防造成恢復體力時的不均等待遇。
(4)編排時,對比賽條件、場館、觀眾、時間的安排要統籌兼顧,使各隊基本上達到均衡:在安排賽程時,要使比賽能逐步推向高潮,各輪次都應保持有勢均力敵的比賽場次,不使比賽出現冷場,讓比賽越打越緊張。 單循環名次的確定應按以下步驟進行:
1.按積分確定名次,積分多者名次在前。積分按勝一次(場)得2分,負一次(場)得1分,未出場比賽或未完成比賽輸的場次得0分計算。
2.如果有兩個或兩個以上的隊(人)積分相同,他們有關的名次應按他們相互之間比賽的成績決定。首先,計算他們之間獲得的積分,再根據需要計算某個隊的場次(團體賽時),局和分的勝負比率,直至計算出名次為止。場次比率=勝場數/負場數;局數比率=勝局數/負局數;分數比率=勝分數/負分數。
3.如果在任何階段已經決定出一個或更多小組成員的名次後,而其他小組成員仍然積分相同,為計算相同分數成員的名次,根據上述程序繼續計算時,應將已決定出名次的小組成員的比賽成績刪除。
4、如果按照上述3條所規定的程序,仍不能決定某些隊(人)的名次時,這些隊(人)的名次將由抽簽來決定。
Ⅹ 循環賽的公式
1、單循環
單循環比賽場次計算的公式為: X=N(N-1)/2,即:隊數*(隊數-1 )/2。
例如:8個隊參加比賽,比賽總場數是: [8x(8-1)]/2=28場
計算場次的目的,在於計算比賽所需的場地數量,並由此考慮裁判員的數量,以及如何編排競賽日程表等。
2、雙循環
雙循環,是所有參加比賽的隊均能相遇兩次,最後按各隊在兩個循環的全部比賽中的積分、得失分率排列名次。如果參賽隊少,或者創造更多的比賽機會,通常 採用雙循環的比賽方法。
目前,全國男子籃球甲聯賽採用主客場制,在第一階段預賽和9~12名保級賽中採用的就是雙循環比賽。
雙循環比賽的輪次、場次以及比賽時間,均是單循環比賽的倍數。
3、分組循環
分組循環,是將所有參加比賽的隊先分成若干個小組進行第一階段預賽,然後每組的優勝隊之間再進行第二階段的決賽,決定第1名和以下的名次。
在分組預賽中採用單循環的比賽方法,在決賽中可採用單循環賽、同名次賽、交叉賽等,故也稱這種競賽方法為混合循環制或"兩階段制"。分組循環適用於有較多的隊參加的競賽,可以在不長的期限內較合理較公平地完成競賽任務。
(10)循環賽日程表演算法擴展閱讀:
循環賽的各個參賽者(隊)的名次需在整個比賽結束以後,統計各自的積分才能最終全部確定,所以一旦開賽就不便增減參賽者,不然就會影響各參賽者成績的計算,不時鬧出的退賽風波就暴露了這個弱點。
另外,循環賽的每一場比賽除了產生當事雙方的成績以外,還可能影響到第三方的名次,這就為產生各種涉及人情、關系、利益的比賽埋下了隱患,以影響比賽的公平公正。
由此可見,循環賽是種封閉式的、易受干擾的比賽制度。為避免循環賽運行時可能出現的麻煩,可選用排位賽制度予以代之。