日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

信息学奥赛一本通(1181:整数奇偶排序)——快速排序

發布時間:2025/3/17 编程问答 5 豆豆
生活随笔 收集整理的這篇文章主要介紹了 信息学奥赛一本通(1181:整数奇偶排序)——快速排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1181:整數奇偶排序


時間限制: 1000 ms ??? ??? 內存限制: 65536 KB
提交數: 13733 ??? 通過數: 8879

【題目描述】

給定10個整數的序列,要求對其重新排序。排序要求:

1.奇數在前,偶數在后;

2.奇數按從大到小排序;

3.偶數按從小到大排序。

【輸入】

輸入一行,包含10個整數,彼此以一個空格分開,每個整數的范圍是大于等于0,小于等于30000。

【輸出】

按照要求排序后輸出一行,包含排序后的10個整數,數與數之間以一個空格分開。

【輸入樣例】

4 7 3 13 11 12 0 47 34 98

【輸出樣例】

47 13 11 7 3 0 4 12 34 98

【參考代碼】

? ? ? ? 快速排序是對冒泡排序的一種改進,它的基本思想是:通過一趟排序將待排記錄分割成獨立的兩個部分,其中一部分記錄的關鍵字均比另一部分記錄的關鍵字小,則分別對這兩部分記錄繼續進行排序,以達到整個序列有序。

【參考代碼】

#include <stdio.h>
#define N 15
int a[N],b[N];
void odd_qsort(int l,int r)
{
?? ?int i,j,mid,p;
?? ?i=l;
?? ?j=r;
?? ?mid=a[(l+r)/2];
?? ?do
?? ?{
?? ??? ?while(a[i]>mid)
?? ??? ??? ?i++;
?? ??? ?while(a[j]<mid)
?? ??? ??? ?j--;
?? ??? ?
?? ??? ?if(i<=j)
?? ??? ?{
?? ??? ??? ?p=a[i];
?? ??? ??? ?a[i]=a[j];
?? ??? ??? ?a[j]=p;
?? ??? ??? ?i++;
?? ??? ??? ?j--;
?? ??? ?}
?? ?}while(i<=j);
?? ?if(l<j)
?? ??? ?odd_qsort(l,j);
?? ?if(i<r)
?? ??? ?odd_qsort(i,r);
}
void even_qsort(int l,int r)
{
?? ?int i,j,mid,p;
?? ?i=l;
?? ?j=r;
?? ?mid=b[(l+r)/2];
?? ?do
?? ?{
?? ??? ?while(b[i]<mid)
?? ??? ??? ?i++;
?? ??? ?while(b[j]>mid)
?? ??? ??? ?j--;
?? ??? ?
?? ??? ?if(i<=j)
?? ??? ?{
?? ??? ??? ?p=b[i];
?? ??? ??? ?b[i]=b[j];
?? ??? ??? ?b[j]=p;
?? ??? ??? ?i++;
?? ??? ??? ?j--;
?? ??? ?}
?? ?}while(i<=j);
?? ?if(l<j)
?? ??? ?even_qsort(l,j);
?? ?if(i<r)
?? ??? ?even_qsort(i,r);
}
int main()
{
?? ?int i,j=0,k=0,x;
?? ?for(i=0;i<10;i++)
?? ?{
?? ??? ?scanf("%d",&x);
?? ??? ?if(x%2!=0)
?? ??? ?{
?? ??? ??? ?a[j]=x;
?? ??? ??? ?j++;
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?b[k]=x;
?? ??? ??? ?k++;
?? ??? ?}
?? ?}
?? ?odd_qsort(0,j-1);
?? ?even_qsort(0,k-1);
?? ?
?? ?for(i=0;i<j;i++)
?? ??? ?printf("%d ",a[i]);
?? ?for(i=0;i<k;i++)
?? ??? ?printf("%d ",b[i]);
?? ?return 0;
}

http://ybt.ssoier.cn:8088/problem_show.php?pid=1181

?

總結

以上是生活随笔為你收集整理的信息学奥赛一本通(1181:整数奇偶排序)——快速排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。