導航:首頁 > 源碼編譯 > 成績排序演算法

成績排序演算法

發布時間:2022-11-27 10:21:44

㈠ 編寫c語言程序用三個函數求10個同學的平均分及成績排序

1、寫一個主函數,10個成績放在一個數組里。
2、然後寫一個求平均值的函數,返回平均值,用循環語句求和在求平均值,小學生應該都會求平均值。
3、再寫一個排序演算法,先模仿一個冒泡排序演算法,最簡單的排序演算法。

這樣不就三個函數了嗎?,這個題主要讓你初步掌握,數組,循環語句的使用,函數的調用,函數參數的傳遞,函數值的返回等。學習C就自己多練,多想這樣會進步,代碼就不寫了吧,對你不好。

㈡ 對學生成績表(只有總成績),請分別用冒泡排序和快速排序演算法,對成績表按綜合成績非遞減有序排序

冒泡排序是一種交換排序方式。設有n個數據依次放在數組元素a(1)至a(n)中,用冒泡法對這n個數據進行遞增排序的過程為:先比較a(1)與a(2),若逆序則交換之,接著比較a(2)與a(3),若逆序就交換……依次進行,知道將a(n-1)與a(n)比較交換完,才算完成了第一輪比較交換。然後以同樣規則進行第二次交換……一直到數據排好序為止。最壞情形下比較1/2 n(n-1)次,交換3/2 n(n-1)次。
快速排序是由著名計算機學家C.A.R.Hoare在起泡排序的基礎上提出的一種高效率的排序演算法。它的基本思想是:在待排序數列中選取一個元素(通常是第一個元素)x,按某一規律經過多次交換位置後,它移到某一位置,以此位置對原數列進行劃分,使得得到的兩個子數列對x來說符合排序規律。元素x稱為此數列中的劃分元素。接著按此方法對兩個字數列再劃分,直到得到不需要進一步劃分的子數列為止。這一過程具有明顯的遞歸性。
快速排序多數情況下比冒泡排序要高效,若需要演算法或代碼可以hi本人。

㈢ c語言程序設計 成績排序

BiThrTree bt = NULL;
CreateBTree(bt);//生成一棵二杈排序樹(輸入單個字元,以#結束)
InOrderPrint_1(bt); //中序遍歷輸出結點(遞歸)
cout << endl;
BiThrTree BT = InOrderThreading(bt);//中序遍歷二杈樹,並將其中序線索化
InOrderTraverse_Thr(BT);//中序遍歷線索二杈樹的非遞歸演算法, T 指向頭結點
system("PAUSE");
return EXIT_SUCCESS;
}
void InOrderTraverse_Thr(BiThrTree T)//中序遍歷線索二杈樹的非遞歸演算法, T 指向頭結點
{
BiThrTree p = T->lchild; //p指向根結點
while (p != T) //空樹或遍歷結束時,p == T
{

㈣ 請問如何用c語言把100個同學的成績按高低秩序排列出來了

我可以教你一個大概的思路,因為我現在網吧,
先定義一個結構體struct student,
裡麵包含{
char name[100];
float score;
};
然後定義scanf輸入成績,記得在定義個struct student指針類型(也是數組類型)
之後你在用冒泡排序法去只比較st->score裡面數值的大小(先用for,再在裡面用if判斷),
再後把結構體之間的位置調換,(記得比較的是st->score,調換的是st)
t = st【i】;
st【i】=st【j】;
st【j】=t;
這樣再輸出就行了

㈤ 成績分析中的 三率一分算名次 誰知道怎麼算的

通俗的來講,「三率」指的就是某個群體的優秀率、良好率、及格率;「一分」指的是平均分。當然,在分析「三率一分」的同時,可以分析很多其他的指標,故校領導說需要分析「三率一分」,我們不要簡單地認為只有幾個指標,可以從不同方面進行分析。
1、成績錄入名冊。
在操作「一分三率」統計表之前,要先建立考試名冊。考試名冊按學校按班級按座位號排列,試卷亦按此順序排放,查對試卷數與學生名冊是否相符,是否有缺考。成績錄入時由一人讀數一人錄入一人檢錄,錄完後再次核對。
2、學生分數排序。(以《一分三率表·五數總》為例)
按「學校(升或降序皆可)——班級(升序)——分數(降序)」排序。
【操作】:選定從姓名到成績的列,執行「數據——排列」 ,在復選框「主要關鍵字」欄選擇「學校」列,在「次要關鍵字」欄選擇「班級」列,在「主要關鍵字」欄選擇「成績」列,確定。
3、按班編寫序號。用不同顏色按分數(因為一分三率是以班級評價)從高到低以01向下填充(為後面的三率查找人數服務)。
4、確定三率人數。
(1)確定優秀人數:公式「總人數×優秀率(15%)=優秀人數」。本例中,優秀人數應是:1000×15%=150(人),但由於最後一位的94分並列到164位,則取優秀人數為164。
(2)確定良好人數:公式「總人數×良好率(40%)=良好人數」。本表中,良好人數應是:1000×40%=400(人),但400位下84分還並列到404,則取良好人數為404人。
(3)確定及格人數:公式「總人數×及格率(80%)=及格人數」。本表中,及格人數應是:1000×80%=800(人),但52分並列到806,則取及格人數為806人。

㈥ 對全國高考分數排名用什麼排序演算法好在線等解答

應該是計數排序,因為高考成績是值為0~750分的整數,而且就算分數有什麼0.5,高考也會乾脆搞四捨五入,或者直接不給0.5,來確保所有分值都是整數,給計數排序提供了可行性。
計數排序可以將時間復雜度降到最低,為o(n+r),n為人數(約1000萬人!),r=滿分+1=751;而簡單排序法如冒泡 、選擇、插入的時間復雜度都會達到o(n^2)。而且計數排序所用時間長度還比較穩定,最好與最壞的情況基本沒有什麼差距。
這樣算來,計數排序在時間上整整領先了8個數量級,而如今處理器的頻率都是幾個GHz(10^9 Hz級別),還是多核的,10的8~9次方的處理次數在時間上不會造成過大的負擔。
內存佔用上,雖然這個演算法有一定空間復雜度,為o(n+r),高考全國統一考號為14位,需要以長整數的格式存儲(最大值約為9.223*10^18),所以每個考號佔8個位元組,總共8*(n+r)位元組,折算下來大概80多MB,而且原始表單存儲在硬碟里,整個計分程序的內存佔用,滿打滿算也就是你用瀏覽器看幾個網頁的內存佔用,這對現在的電腦不是輕輕鬆鬆?無論是處理速度還是內存佔用,在高考總分排名上,計數排序都是最優方案,擁有最高效率。

再者,計數排序還可以帶來一個不錯的副產物,就是每個分值(或分段)的人數也可以在最後用表格的方式生成,在資料庫內給考生排好序的同時,也給院校招生,與考生估測自己可以進哪個院校,都提供了方便。
總之,雖然我沒有親自參與過這個項目,我只是被排名,被院校挑選的,但是最後,我憑借自己所學的知識,推理出了高考分數的排名機制——計數排序。
補充知識:
計數排序,是給最大最小值差距不大的一組整數(整數的個數可以很多)排序的一種演算法,例如高考總分0~750分,考試分數0~100(或150)分,之類的。它不是很依賴大小的比較,它主要的機制是,遍歷整個原始表單,記住每個對應數值上的對象個數,很多時候也得存儲這些對象對應的編號,這些事作完以後,再根據數值順序,給出已經排序完畢的表單,還可以順便生成每個數值,或數值段的人數。計數排序演算法在處理特定任務上有較大優勢。

㈦ (一)學生成績排名 採用選擇法,將學生成績從高到低進行排序,再輸入一個學生的成績,將此成績按照排序規

#include<stdio.h>
//#define num 10
//int a[10];
void main()
{
int a[10];
int studentNum;
int i;

void Ascending(int a[],int studentNum); //聲明升序函數
void Descending(int a[],int studentNum);//聲明降序函數
void Input(int a[],int studentNum);//插入新成績函數
studentNum = 10;
printf("請輸入%d個學生成績\n",studentNum);
for(i = 0;i < studentNum;i++)
{
scanf("%d",&a[i]);
}

Descending(a,studentNum);
printf("經排序後的數為:\n");
for(i = 0;i < studentNum;i++)
{
printf("%d\t",a[i]);
}
Input(a,studentNum);
}

//升序排列
void Ascending(int a[10],int studentNum)
{
int i,j;
for(i = 0;i < studentNum;i++)
{
for(j = i + 1;j <= studentNum;j++)
{
if(a[j] < a[i])
{
int t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}

}

//降序排列
void Descending(int a[10],int studentNum)
{
int i;
Ascending(a,studentNum);
for(i = 0;i < (studentNum - 1)/2;i++)
{
int t = a[i];
a[i] = a[studentNum - 1 - i];
a[studentNum - 1 - i] = t;
}
}

//插入新成績函數
void Input(int a[10],int studentNum)
{
int b[11];
int i,newScore;
int con;
printf("是否要插入一個新成績1/0:");
scanf("%d",&con);
if(con == 1)
{
printf("請輸入新的成績:");
scanf("%d",&newScore);
for(i = 0;i < studentNum;i++)
{
b[i] = a[i];
}
b[studentNum] = newScore;
studentNum++;
Ascending(b,studentNum);
printf("經升序後的數為:\n");
for(i = 0;i < studentNum;i++)
{
printf("%d\t",b[i]);
}
Descending(b,studentNum);
printf("\n經降序後的數為:\n");
for(i = 0;i < studentNum;i++)
{
printf("%d\t",b[i]);
}
Input(b,studentNum);
}
else
{
printf("程序結束!");
}
}

㈧ 1,先按語文降序排列,語文成績相同的再按計算機升序排序.

輸入"=總分*1000000+語文*1000+數學*1+等等*0.001「

也就是說把總分擴大,總分大的就大,總分相等就以語文大的為大,語文還相等就以數學,就此類推,最後還一樣大。

輸入「=RANK(E2,E$3:E$100)」。


(8)成績排序演算法擴展閱讀

常見排序演算法 :

快速排序、希爾排序、堆排序、直接選擇排序不是穩定的排序演算法,而基數排序、冒泡排序、直接插入排序、折半插入排序、歸並排序是穩定的排序演算法。

分類:

1、穩定排序:假設在待排序的文件中,存在兩個或兩個以上的記錄具有相同的關鍵字,在用某種排序法排序後,若這些相同關鍵字的元素的相對次序仍然不變,則這種排序方法是穩定的。其中冒泡,插入,基數,歸並屬於穩定排序,選擇,快速,希爾,歸屬於不穩定排序。

2、就地排序:若排序演算法所需的輔助空間並不依賴於問題的規模n,即輔助空間為O(1),則稱為就地排序。

㈨ 用結構體完成N個學生M名課程的成績排序 用C語言編寫

#include<stdio.h>


intmain()
{
structstudent
{
intstunum;
charstuname[20];
intstuscore1;
intstuscore2;
intstuscore3;
};

inti=0;
intj=0;
intrange=0;
structstudentstudents[100];
structstudenttemp;
intn=0;
printf("請輸入學生總數: ");
scanf("%d",&n);

for(i=0;i<n;i++)
{
scanf("%d%s%d%d%d",&students[i].stunum,students[i].stuname,&students[i].stuscore1,&students[i].stuscore2,&students[i].stuscore3);
}

scanf("%d",&range);
switch(range)
{
case1:
{
for(i=0;i<n;i++)
{
for(j=0;j<n-1-i;j++)
{
if(students[j].stuscore1<students[j+1].stuscore1)
{
temp=students[j];
students[j]=students[j+1];
students[j+1]=temp;

}
if(students[j].stuscore1==students[j+1].stuscore1)
{
if(students[j].stunum>students[j+1].stunum)
{
temp=students[j];
students[j]=students[j+1];
students[j+1]=temp;
}


}
}
}
for(i=0;i<n;i++)
{
printf("%d%s%d%d%d ",students[i].stunum,students[i].stuname,students[i].stuscore1,students[i].stuscore2,students[i].stuscore3);
}
break;
}
case2:
{
for(i=0;i<n;i++)
{
for(j=0;j<n-1-i;j++)
{
if(students[j].stuscore2<students[j+1].stuscore2)
{
temp=students[j];
students[j]=students[j+1];
students[j+1]=temp;

}
if(students[j].stuscore2==students[j+1].stuscore2)
{
if(students[j].stunum>students[j+1].stunum)
{
temp=students[j];
students[j]=students[j+1];
students[j+1]=temp;
}


}
}
}
for(i=0;i<n;i++)
{
printf("%d%s%d%d%d ",students[i].stunum,students[i].stuname,students[i].stuscore1,students[i].stuscore2,students[i].stuscore3);
}
break;
}
case3:
{
for(i=0;i<n;i++)
{
for(j=0;j<n-1-i;j++)
{
if(students[j].stuscore3<students[j+1].stuscore3)
{
temp=students[j];
students[j]=students[j+1];
students[j+1]=temp;

}
if(students[j].stuscore3==students[j+1].stuscore3)
{
if(students[j].stunum>students[j+1].stunum)
{
temp=students[j];
students[j]=students[j+1];
students[j+1]=temp;
}


}
}
}
for(i=0;i<n;i++)
{
printf("%d%s%d%d%d ",students[i].stunum,students[i].stuname,students[i].stuscore1,students[i].stuscore2,students[i].stuscore3);
}
break;
}
}
return0;
}

㈩ 國考成績計算方法是什麼

2019年國家公務員考試筆試成績計算有以下規定:

1.分數計算:一般情況下,計算方法為(行測+申論)/2=筆試總分,因為行測和申論的總分是200分而成績計算是百分制,所以要除以2。

2、排名計算:當幾個人筆試總成績完全一樣時,該幾個人用同一個排名序號,在其後者按照人數序位給予。例如假設如果第一名是80分,有三個人都是79分,如果緊隨其後的是78分,那麼幾人的排序是第一名80分,第二名三人79分,第五名78分。

3、排位順序:如果兩個人筆試成績都一樣,那麼就按照行測成績進行排序,所以像2中的三個79分的,前後順序是按照行測順序排名的。如果出現全部成績都一樣的情況(盡管概率很低),也是按照行測成績來決定先後的。

另外,多說一些,在閱卷時,行測和申論的閱卷方式如下:

行測:常識和圖形推理一般每題0.6分,其餘文字部分一般0.8分,數量關系、資料分析一般每題1分;

申論:

小題是踩點給分,20分的題目中,做到有層次的一般是3分,能把原詞都提煉出來的一般可以得到12分,能適當概括成為短語的得到5分,每個都是長篇大論寫滿的一般很難得到高分,一般都是8分左右。

大作文:緊扣材料的,包括觀點和例子,總分30分;稍微有點文採的,加上5分,卷面要求是5分,實質上佔到了10分左右。剩下的就是其他方面了。

閱讀全文

與成績排序演算法相關的資料

熱點內容
ug編程之巴雷特第一講 瀏覽:980
安卓手機如何保護人臉識別 瀏覽:713
男友程序員每天都加班 瀏覽:620
全文檢索java 瀏覽:299
大數據用什麼編程語言 瀏覽:287
數據上傳伺服器有什麼方式 瀏覽:330
我的世界多人伺服器叫什麼 瀏覽:753
qt程序怎樣實現反編譯 瀏覽:734
手機安卓用戶是什麼意思 瀏覽:541
c單片機delay 瀏覽:192
文件夾壞了怎麼修補 瀏覽:166
熱血江湖無法連接伺服器怎麼辦 瀏覽:527
長河pdf 瀏覽:125
華為手機側欄怎麼減少app 瀏覽:486
親愛的程序員免費在線觀看 瀏覽:314
生活碎片文件夾模版 瀏覽:689
浙江伺服器託管機房雲伺服器 瀏覽:309
Java反編譯防止 瀏覽:728
linux退出啟動 瀏覽:623
華碩主板硬體加密 瀏覽:897