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

湘大 XTU OJ 1097 排序 題解:c++ 函數(shù)庫的使用 快速排序 歸并排序 冒泡排序

這篇具有很好參考價值的文章主要介紹了湘大 XTU OJ 1097 排序 題解:c++ 函數(shù)庫的使用 快速排序 歸并排序 冒泡排序。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、鏈接

1097 排序

二、題目

Description

N個整數(shù),將其排序輸出。

輸入

第一行是一個整數(shù)K(1<=K<=20),表示有多少個樣例,每個樣例的第一行是一個整數(shù)N(1<=N<=1,000)和一個字符X,X為A時表示升序排序,為D時為降序排列;第二行為N個整數(shù),每個整數(shù)都可以使用int表示,每個之間用一個空格隔開。

輸出

每個樣例輸出一行,按排序要求輸出整數(shù),每個整數(shù)之間輸出一個空格。(最后一個整數(shù)后不要有空格

Sample Input

2
3 A
3 5 2
4 D
2 5 7 3

Sample Output

2 3 5
7 5 3 2

Source

ericxie

三、題意

實(shí)現(xiàn)兩種排序,升序排序和降序排序

四、代碼

c++函數(shù)庫代碼

#include<iostream>
#include<algorithm>

using namespace std;

const int N=1e3+10;

int a[N];

int main()
{
	int t;
	scanf("%d",&t);
	
	while(t--)
	{
		int x;
		char op[2];
		scanf("%d%s",&x,op);
		
		for(int i=0;i<x;i++)	scanf("%d",&a[i]);
		
		sort(a,a+x);
		if(op[0]=='D')	reverse(a,a+x);	
		
		for(int i=0;i<x-1;i++)	printf("%d ",a[i]);
		
		printf("%d",a[x-1]);
		
		printf("\n");
	}
	
	return 0;
}

快速排序代碼

#include<iostream>
#include<algorithm>

using namespace std;

const int N=1e3+10;

int a[N];

//快速排序
void quick_sort(int a[],int l,int r)
{
	if(l>=r)	return;
	
	int i=l-1,j=r+1,x=a[(l+r)/2];
	
	while(i<j)
	{
		do
		{
			i++;
		}while(a[i]<x);
		
		do
		{
			j--;
		}while(a[j]>x);
		
		if(i<j)	swap(a[i],a[j]);
	}
	
	quick_sort(a,l,j);
	quick_sort(a,j+1,r);
}

int main()
{
	int t;
	scanf("%d",&t);
	
	while(t--)
	{
		char op[2];
		int n;
		scanf("%d%s",&n,op);
		
		for(int i=0;i<n;i++)	scanf("%d",&a[i]);
		
		quick_sort(a,0,n-1);
		
		if(op[0]=='D')	reverse(a,a+n);
		
		for(int i=0;i<n-1;i++)	printf("%d ",a[i]);
		
		printf("%d",a[n-1]);
		
		printf("\n");
	}
	
	return 0;
}

歸并排序

#include<iostream>
#include<algorithm>

using namespace std;

const int N=1e3+10;

int q[N],temp[N];

void merge_sort(int q[],int l,int r)
{
	if(l>=r)	return;
	
	int x=(l+r)/2;
	
	merge_sort(q,l,x);
	merge_sort(q,x+1,r);
	
	int k=0,i=l,j=x+1;
	while(i<=x&&j<=r)
	{
		if(q[i]<=q[j])	temp[k++]=q[i++];
		else	temp[k++]=q[j++];
	}
	
	while(i<=x)	temp[k++]=q[i++];
	while(j<=r)	temp[k++]=q[j++];
	
	for(int i=l,j=0;i<=r;i++,j++)
	{
		q[i]=temp[j];
	}
}

int main()
{
	int t;
	scanf("%d",&t);
	
	while(t--)
	{
		int n;
		char op[2];
		scanf("%d%s",&n,op);
		
		for(int i=0;i<n;i++)	scanf("%d",&q[i]);
		
		merge_sort(q,0,n-1);
		
		if(op[0]=='D')	reverse(q,q+n);
		
		for(int i=0;i<n-1;i++)	printf("%d ",q[i]);
		
		printf("%d\n",q[n-1]);
	}
	
	return 0;
}

?文章來源地址http://www.zghlxwxcb.cn/news/detail-645178.html

?c語言冒泡排序

#include<stdio.h>

int a[1000+10];

void up(int a[],int n)
{
	for(int i=0;i<n;i++)
	{
		for(int j=i+1;j<n;j++)
		{
			if(a[i]>a[j])
			{
				int temp=0;
				temp=a[i];
				a[i]=a[j];
				a[j]=temp;
			}
		}
	}
}

void down(int a[],int n)
{
	for(int i=0;i<n;i++)
	{
		for(int j=i+1;j<n;j++)
		{
			if(a[i]<a[j])
			{
				int temp=0;
				temp=a[i];
				a[i]=a[j];
				a[j]=temp;
			}
		}
	}
}

int main()
{
	int t;
	scanf("%d",&t);
	
	while(t--)
	{
		int n;
		char op[2];
		scanf("%d%s",&n,op);
		
		for(int i=0;i<n;i++)	scanf("%d",&a[i]);
		
		if(op[0]=='A')	up(a,n);
		else	down(a,n);
		
		for(int i=0;i<n-1;i++)	printf("%d ",a[i]);
		
		printf("%d\n",a[n-1]);
	}
	
	return 0;
}

?

五、總結(jié)

1.快速排序:785. 快速排序

2.歸并排序:787. 歸并排序

3.使用c++函數(shù)庫是最簡單的方法,直接調(diào)用sort函數(shù),然后翻轉(zhuǎn)一下就是從大到小進(jìn)行降序排序

4. 冒泡排序自己手動實(shí)現(xiàn)swap函數(shù)即可,非常經(jīng)典的四個語句

int temp=0;
temp=a[i];
a[i]=a[j];
a[j]=temp;

5.只管代碼美觀的話,先進(jìn)行升序排序,條件判斷一下,如果輸入的字符串是D,就降序排序,最后按照要求輸出即可,時間復(fù)雜度,可能會因?yàn)榘炎兂稍瓉頃r間復(fù)雜度的常數(shù)倍,但是其實(shí)沒什么影響(針對做題來說)

6.輸出有一些問題,行尾不能輸出空格,所以只能先輸出到倒數(shù)第二個元素,然后輸出最后一個元素+換行

7. 簡單來說快速排序是先移動數(shù)組元素再遞歸,歸并排序是先遞歸再移動數(shù)組元素,并且需要使用一個額外的臨時數(shù)組元素,歸并排序是兩個部分是排好序的,把兩個排好序的部分存到臨時數(shù)組里面,最后面還要把這個臨時數(shù)組里面的所有元素存回原來的數(shù)組

8.快速排序是在一個數(shù)組里面使用兩個指針不斷移動和維護(hù)

六、精美圖片

湘大 XTU OJ 1097 排序 題解:c++ 函數(shù)庫的使用 快速排序 歸并排序 冒泡排序,算法競賽,湘大 XTU OJ,c++,算法,數(shù)據(jù)結(jié)構(gòu)

?

到了這里,關(guān)于湘大 XTU OJ 1097 排序 題解:c++ 函數(shù)庫的使用 快速排序 歸并排序 冒泡排序的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 湘大 XTU OJ:1406 String Game、1098 素?cái)?shù)個數(shù) 題解(非常詳細(xì))

    湘大 XTU OJ:1406 String Game、1098 素?cái)?shù)個數(shù) 題解(非常詳細(xì))

    1406 String Game Alice和Bob正在玩一個基于字符串的游戲,一開始, Alice和Bob分別擁有一個等長的字符串S1和S2 ,且這兩個字符串只包含小寫字母。 在每個回合中, Alice和Bob 必須 分別選擇自己的字符串的某一個位置并把這個位置上的字母改變?yōu)槠渌懽帜?。 經(jīng)過P個回合后,他

    2024年02月13日
    瀏覽(23)
  • 湘大 XTU OJ 1308 比賽 題解:循環(huán)結(jié)束的臨界點(diǎn)+樸素模擬

    湘大 XTU OJ 1308 比賽 題解:循環(huán)結(jié)束的臨界點(diǎn)+樸素模擬

    比賽 有 n個人要進(jìn)行比賽 ,比賽規(guī)則如下: 假設(shè)每輪比賽的人是m,取 最大的k , k=2^t 且k≤m。 這k個人每2人舉行一場比賽 ,勝利者進(jìn)入一下輪,失敗者被淘汰。 余下的m-k個人,不進(jìn)行比賽,直接進(jìn)入下一輪 直到?jīng)Q出冠軍,比賽結(jié)束 。 比如有5個人參加比賽,第一輪舉辦

    2024年02月13日
    瀏覽(23)
  • 湘大 XTU OJ 1345 素?cái)?shù)字符串 題解:歐拉篩法 前綴和 ‘\0‘ sprintf

    湘大 XTU OJ 1345 素?cái)?shù)字符串 題解:歐拉篩法 前綴和 ‘\0‘ sprintf

    素?cái)?shù)字符串 我們將素?cái)?shù)從小到大依次書寫,可以得到一個字符串\\\"23571113?\\\",已知一個數(shù)碼d(0≤d≤9),求字符串在區(qū)間[L,R]之間的多少個d? 第一行是一個整數(shù)T(1≤T≤10000),表示樣例的個數(shù)。 每個樣例是一行, 為3個整數(shù),區(qū)間L,R,(1≤L≤R≤1000000)和數(shù)碼d。 區(qū)間從1開始計(jì)數(shù)。 每

    2024年02月12日
    瀏覽(22)
  • 湘大 XTU OJ 1290 Alice and Bob 題解(非常詳細(xì)):字符串 分類討論 簡單模擬

    湘大 XTU OJ 1290 Alice and Bob 題解(非常詳細(xì)):字符串 分類討論 簡單模擬

    1290 Alice and Bob Alice和Bob玩剪刀-石頭-布的游戲 ,請你寫個程序判斷一下比賽的結(jié)果。 第一行是一個整數(shù)K,表示樣例的個數(shù)。 以后每行兩個單詞, rock表示石頭,paper表示布,scissors表示剪刀 。 前面一個單詞是Alice出的拳,后面一個單詞是Bob出的拳。 平局輸出\\\"Draw\\\",否則輸出

    2024年02月13日
    瀏覽(22)
  • 湘大 XTU OJ 1148 三角形 題解(非常詳細(xì)):根據(jù)題意樸素模擬+觀察樣例分析需要計(jì)算幾輪 具體到一般

    湘大 XTU OJ 1148 三角形 題解(非常詳細(xì)):根據(jù)題意樸素模擬+觀察樣例分析需要計(jì)算幾輪 具體到一般

    1148 三角形 題目描述 給一個序列, 按下面的方式進(jìn)行三角形累加,求其和值 。 比如序列為 1,2,3,4,5 輸入 有多組樣例。每個樣例的第一行是一個整數(shù)N( 1≤N≤100 ),表示序列的大小, 如果N為0表示輸入結(jié)束。這個樣例不需要處理。 第二行是N個整數(shù),每個整數(shù)處于[0,100]之間。

    2024年02月13日
    瀏覽(31)
  • 【洛谷 P1097】[NOIP2007 提高組] 統(tǒng)計(jì)數(shù)字 題解(映射)

    注意 :數(shù)據(jù)可能存在加強(qiáng)。 某次科研調(diào)查時得到了 n n n 個自然數(shù),每個數(shù)均不超過 1.5 × 1 0 9 1.5 times 10^9 1.5 × 1 0 9 。已知不相同的數(shù)不超過 1 0 4 10^4 1 0 4 個,現(xiàn)在需要統(tǒng)計(jì)這些自然數(shù)各自出現(xiàn)的次數(shù),并按照自然數(shù)從小到大的順序輸出統(tǒng)計(jì)結(jié)果。 共 n + 1 n+1 n + 1 行。 第一

    2024年02月09日
    瀏覽(14)
  • xtu oj 1522 格子

    一個n×m的網(wǎng)格,格子里最多能放一枚棋子,將k枚棋子隨機(jī)放入不同的網(wǎng)格中,使得同行同列最多只有一枚棋子,請問概率是多少? 第一行是一個整數(shù)T?(1≤T≤512),表示樣例的個數(shù)。 以后每行一個樣例,為三個整數(shù)n,m,k,?(1≤n,m,k≤8) 每行輸出一個樣例的結(jié)果,如果概率為0,

    2024年01月21日
    瀏覽(46)
  • xtu oj 1329 連分式

    xtu oj 1329 連分式

    連分式是形如下面的分式,已知a,b和迭代的次數(shù)n,求連分式的值。 第一行是一個整數(shù)T(1≤T≤1000),表示樣例的個數(shù)。 每行一個樣例,為a,b,n(1≤a,b,n≤9) 每行輸出一個樣例的結(jié)果,使用x/y分式表達(dá),并保證x,y互質(zhì)。 AC代碼 找規(guī)律即可,與1374連分?jǐn)?shù)類似。

    2024年02月02日
    瀏覽(20)
  • xtu oj 1327 字符矩陣

    按照示例的規(guī)律輸出字符矩陣。 比如輸入字母 D 時,輸出字符矩陣如下 字符矩陣行首、尾都無空格。 每行一個大寫英文字母,如果字符為 # ,表示輸入結(jié)束,不需要處理。 依次輸出對應(yīng)的字符矩陣 AC代碼 解題思路:利用二維數(shù)組找規(guī)律進(jìn)行分塊打印即可。此題與前面1233

    2024年02月05日
    瀏覽(16)
  • xtu oj 1340 wave

    xtu oj 1340 wave

    一個n列的網(wǎng)格,從(0,0)網(wǎng)格點(diǎn)出發(fā),波形存在平波(從(x,y)到(x+1,y)),上升波(從(x,y)到(x+1,y+1)),下降波(從(x,y)到(x+1,y?1))三種波形,請問從(0,0)出發(fā),最終到達(dá)(n,0)的不同波形有多少種?如圖,3列網(wǎng)格有7種不同的波形。 第一行是樣例數(shù)T(1≤T≤42)。 以后每行一個整數(shù)n(1≤n≤42

    2024年02月01日
    瀏覽(16)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包