国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)據(jù)結(jié)構(gòu)實驗任務(wù)八:排序算法的實現(xiàn)與分析

這篇具有很好參考價值的文章主要介紹了數(shù)據(jù)結(jié)構(gòu)實驗任務(wù)八:排序算法的實現(xiàn)與分析。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

問題描述 統(tǒng)計成績:給出 n 個學(xué)生的考試成績表,每條信息由姓名和分?jǐn)?shù)組成,試設(shè) 計一個算法: 1.按分?jǐn)?shù)高低次序,打印出每個學(xué)生在考試中獲得的名次,分?jǐn)?shù)相同的為同 一名次; 2.按名次列出每個學(xué)生的姓名與分?jǐn)?shù)。 輸入要求 輸入 n+1 行,前 n 行是 n 個學(xué)生的信息(姓名,成績),每個學(xué)生信息占一行, 姓名、成績用空格分隔,成績之后沒有空格。最后,第 n+1 行是輸入結(jié)束標(biāo)志:00(空 格分隔的二個 0)。其中,姓名為字符串類型,成績?yōu)楦↑c數(shù)類型。

輸出要求 總計 n 行,每行是一個學(xué)生的信息(名次、姓名、成績),名次、姓名、成績 用空格分隔。其中,成績輸出保留兩位小數(shù)。

輸入樣例

張三 80.00

李四 96.00

王五 90.00

鄭六 78.00

田七 85.00?

李明 90.00

0 0

輸出樣例

1 李四 96.00

2 王五 90.00

2 李明 90.00

3 田七 85.00

4 張三 80.00

5 鄭六 78.0

數(shù)據(jù)結(jié)構(gòu)實驗任務(wù)八:排序算法的實現(xiàn)與分析,數(shù)據(jù)結(jié)構(gòu)實驗,數(shù)據(jù)結(jié)構(gòu),排序算法,算法

代碼實現(xiàn):

#include <stdio.h>
#include <string.h>
#define MaxE 15
typedef struct student //學(xué)生信息定義
{
	char name[8]; //學(xué)生姓名
	float score; //學(xué)生成績
}Stu;

int Read(Stu* a){
	int cunt;
	float s;
	char n[8];
	for(int i=1;i<MaxE;i++){
		scanf("%s %f",n,&s);
		if(n[0]=='0'&&s==0)return i;
		strcpy(a[i].name,n);
		a[i].score = s;
	}
}
void Cal(Stu *a,int n){
	int tmp=-1;
	Stu turn,store;
	for(int i=2;i<n;i++){					//插入排序 
	tmp = -1;
		for(int j=i-1;j>=0;j--){			
			if(a[j].score>a[i].score){		//應(yīng)該將 
				tmp = j+1;		
			}else if(j==0){
				tmp = 1;
			}
			strcpy(store.name,a[i].name);
			store.score = a[i].score;
			if(tmp!=-1){
			for(int k=i;k>tmp;k--){
				turn.score = a[k].score;
				strcpy(turn.name,a[k].name);
				
				a[k].score = a[k-1].score;
				strcpy(a[k].name,a[k-1].name);
				
				a[k-1].score = turn.score;
				strcpy(a[k-1].name,turn.name);
			}

			strcpy(a[tmp].name,store.name);
			a[tmp].score = store.score;
			break;
			}
		}
	}
}

void show(Stu *a,int n){
	int cunt;
	for(int i=1;i<n;i++){
		if(i==1)cunt = 1;
		else{
			if(a[i].score<a[i-1].score)cunt++;
		}
		printf("%d %s %.2f\n",cunt,a[i].name,a[i].score);
	}
}
int main(){
	Stu a[MaxE];
	int n = Read(a);
	Cal(a,n);
	show(a,n);
	return 0;
} 

到此,數(shù)據(jù)結(jié)構(gòu)實驗專欄已全部更新完成,后續(xù)時間我將把精力放在C++題庫專欄,盡快將其全部完成。文章來源地址http://www.zghlxwxcb.cn/news/detail-758929.html

到了這里,關(guān)于數(shù)據(jù)結(jié)構(gòu)實驗任務(wù)八:排序算法的實現(xiàn)與分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【數(shù)據(jù)結(jié)構(gòu)與算法】JavaScript實現(xiàn)排序算法

    【數(shù)據(jù)結(jié)構(gòu)與算法】JavaScript實現(xiàn)排序算法

    一、大O表示法 大O表示法: 在計算機中采用 粗略的度量 來描述計算機算法的 效率 ,這種方法被稱為 “大O”表示法 在 數(shù)據(jù)項個數(shù) 發(fā)生改變時, 算法的效率 也會跟著改變。所以說算法A比算法B快兩倍,這樣的比較是 沒有意義 的。 因此我們通常使用 算法的速度 隨著 數(shù)據(jù)

    2024年02月02日
    瀏覽(27)
  • 【數(shù)據(jù)結(jié)構(gòu)與算法】歸并排序詳解:歸并排序算法,歸并排序非遞歸實現(xiàn)

    【數(shù)據(jù)結(jié)構(gòu)與算法】歸并排序詳解:歸并排序算法,歸并排序非遞歸實現(xiàn)

    歸并排序是一種經(jīng)典的排序算法,它使用了分治法的思想。下面是歸并排序的算法思想: 遞歸地將數(shù)組劃分成較小的子數(shù)組,直到每個子數(shù)組的長度為1或者0。 將相鄰的子數(shù)組合并,形成更大的已排序的數(shù)組,直到最終得到一個完全排序的數(shù)組。 歸并排序的過程可以分為三

    2024年01月22日
    瀏覽(29)
  • 【數(shù)據(jù)結(jié)構(gòu)與算法】:非遞歸實現(xiàn)快速排序、歸并排序

    【數(shù)據(jù)結(jié)構(gòu)與算法】:非遞歸實現(xiàn)快速排序、歸并排序

    ?? 個人主頁 : Quitecoder ?? 專欄 :數(shù)據(jù)結(jié)構(gòu)與算法 上篇文章我們詳細(xì)講解了遞歸版本的快速排序,本篇我們來探究非遞歸實現(xiàn)快速排序和歸并排序 快速排序的非遞歸實現(xiàn)主要依賴于棧(stack)來模擬遞歸過程中的函數(shù)調(diào)用棧。遞歸版本的快速排序通過遞歸調(diào)用自身來處理子

    2024年03月24日
    瀏覽(22)
  • 【數(shù)據(jù)結(jié)構(gòu)與算法C++實現(xiàn)】3、排序算法

    【數(shù)據(jù)結(jié)構(gòu)與算法C++實現(xiàn)】3、排序算法

    原視頻為左程云的B站教學(xué) 外層循環(huán) :n個數(shù)需要冒n-1個泡上去,剩下的一個必然是最小的。所以外層循環(huán)執(zhí)行n-1輪 內(nèi)層循環(huán) :比大小,第1個泡需要比n-1次,第2個泡,比較n-2次… 選擇: 每次從待排序序列中選擇 最小的一個 放在已排序序列的后一個位置 原理類似于對撲克牌

    2024年02月11日
    瀏覽(22)
  • 數(shù)據(jù)結(jié)構(gòu)與算法——排序(C語言實現(xiàn))

    數(shù)據(jù)結(jié)構(gòu)與算法——排序(C語言實現(xiàn))

    ???????????????? ???????????????? ???????????????????????????????? ???????????????????????????????? ???? 追風(fēng)趕月莫停留 ???? ???????????????????????????????? ???? 平蕪盡處是春山

    2024年04月09日
    瀏覽(93)
  • 【數(shù)據(jù)結(jié)構(gòu)】用Java實現(xiàn)七大排序算法

    【數(shù)據(jù)結(jié)構(gòu)】用Java實現(xiàn)七大排序算法

    目錄 ??1. 排序的概念及引用 1.1 排序的概念 1.2 衡量指標(biāo) 1.2 十個排序算法 ?1.3 十個排序性能對比 ??2. 冒泡排序 2.1 算法描述 2.2 動圖 ??代碼優(yōu)化 ??3. 選擇排序 3.1 算法描述 3.2 動圖 ?3.3 代碼 ??4. 插入排序 4.1 算法描述 4.2 動圖 ?4.3 代碼 ??5 希爾排序 5.1 描述 5.2 動圖 ?

    2023年04月23日
    瀏覽(29)
  • [數(shù)據(jù)結(jié)構(gòu) -- 手撕排序算法第七篇] 遞歸實現(xiàn)歸并排序

    [數(shù)據(jù)結(jié)構(gòu) -- 手撕排序算法第七篇] 遞歸實現(xiàn)歸并排序

    目錄 1、歸并的思想 2、歸并排序的思想 2.1 基本思想 2.2 圖解分析 3、歸并排序遞歸版本代碼實現(xiàn) 3.1 代碼解析 3.2 注意事項 3.2.1錯誤劃分:[begin, mid-1],[mid, end] 3.2.2 正確劃分:[begin, mid], [mid+1, end] 4、歸并排序的測試 5、時間復(fù)雜度、空間復(fù)雜度分析 5.1 時間復(fù)雜度 5.2 空間復(fù)雜

    2024年02月16日
    瀏覽(32)
  • 【算法與數(shù)據(jù)結(jié)構(gòu)】Java實現(xiàn)查找與排序

    【算法與數(shù)據(jù)結(jié)構(gòu)】Java實現(xiàn)查找與排序

    也叫做折半查找,屬于有序查找算法。 前提條件 :數(shù)組數(shù)據(jù)必須有序,從小到大,或者從大到小都是可以的。 如果是無序的,也可以先進(jìn)行排序。 但是排序之后,會改變原有數(shù)據(jù)的順序,查找出來元素位置跟原來的元素可能是不一樣的,所以排序之后再查找只能判斷當(dāng)前數(shù)

    2024年01月19日
    瀏覽(30)
  • 數(shù)據(jù)結(jié)構(gòu)與算法中的七大排序(Java實現(xiàn))

    數(shù)據(jù)結(jié)構(gòu)與算法中的七大排序(Java實現(xiàn))

    目錄 一、直接插入排序 二、希爾排序 三、直接選擇排序 四、堆排序 五、冒泡排序 六、快速排序 七、歸并排序 ? ? ? ? ? ? ? 定義i下標(biāo)之前的元素全部已經(jīng)有序 ,遍歷一遍要排序的數(shù)組,把i下標(biāo)前的元素全部進(jìn)行排序,當(dāng)遍歷玩這個數(shù)組后,就已經(jīng)排好序了。 ? ? ? ?

    2024年02月06日
    瀏覽(29)
  • 【數(shù)據(jù)結(jié)構(gòu)與算法】快速排序的三種實現(xiàn)方法

    【數(shù)據(jù)結(jié)構(gòu)與算法】快速排序的三種實現(xiàn)方法

    ? 目錄 一.基本思想 二.Hoare法 動態(tài)演示 三.挖坑法 動態(tài)演示 四.前后指針法 動態(tài)演示 五.快速排序優(yōu)化 隨機下標(biāo)交換法 三路取中法 六.快速排序的特性 任取待排序元素序列中的某元素作為 基準(zhǔn)值 ,按照該排序碼將待排序集合 分割成兩子序列 , 左子序列中所有元素均小于基

    2023年04月09日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包