亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我的中間數掃描哪里有問題

我的中間數掃描哪里有問題

C
名不見經傳的小菜鳥 2017-11-13 20:30:29
7-2?冒泡法排序(20?分)將N個整數按從小到大排序的冒泡排序法是這樣工作的:從頭到尾比較相鄰兩個元素,如果前面的元素大于其緊隨的后面元素,則交換它們。通過一遍掃描,則最后一個元素必定是最大的元素。然后用同樣的方法對前N?1個元素進行第二遍掃描。依此類推,最后只需處理兩個元素,就完成了對N個數的排序。本題要求對任意給定的K(<N),輸出掃描完第K遍后的中間結果數列。輸入格式:輸入在第1行中給出N和K(1≤K<N≤100),在第2行中給出N個待排序的整數,數字間以空格分隔。輸出格式:在一行中輸出冒泡排序法掃描完第K遍后的中間結果數列,數字間以空格分隔,但末尾不得有多余空格。輸入樣例:6 22 3 5 1 6 4輸出樣例:2 1 3 4 5 6#include<stdio.h>int main(){ int i,j,N,K; ? ? ? ? ? ? ? ? ? ? int arr[100]; scanf("%d",&N,&K); for(i=0;i<N;i++) ? ? ? ? ? ?// 這是所求N-1遍的掃描如果相求K遍就將N換K { scanf("%d",&arr[i]); } for(i=N-2;i>=0;i--) { for(j=0;j<=i;j++) ? ? ? ? // 相鄰兩個數的比較 { if(arr[j]>arr[j+1]) ? // 具體操作 { int temp; temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } for(i=K;i<N-K-2;i--) ? ? ? ?// 對中間數的掃描 { for(j=0;j<=i;j++) { if(arr[j+1]>arr[j+2]) { ? int swap; ? swap=arr[j+1]; ? arr[j+1]=arr[j+2]; ? arr[j+2]=swap; } } } for(i=0;i<N;i++) { printf("%d\t",arr[i]); } return 0;}
查看完整描述

1 回答

已采納
?
Yexiaomo

TA貢獻152條經驗 獲得超157個贊

在你原有的代碼上我做了如下修改

需要修改代碼都被我注釋了,自己對照看吧

#include<stdio.h>
int?main()
{
????int?i,j,N,K;????????????????????
????int?arr[100];
????
//????scanf("%d",&N,&K);?
????scanf("%d%d",&N,&K);
????
????for(i=0;i<N;i++)
????{
????????scanf("%d",&arr[i]);
????}
????
//????for(i=N-2;i>=0;i--)
	for(i=N-2;i>=0&&K>0;i--,K--)?//也可以-->for(i=N-2;i>=0&&K>0;i--,K--)
????{
????????for(j=0;j<=i;j++)
????????{
????????????if(arr[j]>arr[j+1])
????????????{
????????????????int?temp;
????????????????temp=arr[j];
????????????????arr[j]=arr[j+1];
????????????????arr[j+1]=temp;
????????????}
????????}
????}
//?刪除?
//????for(i=K;i<N-K-2;i--)
//????{
//????????for(j=0;j<=i;j++)
//????????{
//????????????if(arr[j+1]>arr[j+2])
//????????????{
//????????????????int?swap;
//????????????????swap=arr[j+1];
//????????????????arr[j+1]=arr[j+2];
//????????????????arr[j+2]=swap;
//????????????}
//????????}
//????}
????for(i=0;i<N;i++)
????{
????????//printf("%d\t",arr[i]);
????????printf("%d?",arr[i]);
????}
????return?0;
}

最后的打印結果,如果是要測試的話(在ACM的平臺上提交)還需要一些小的改動

查看完整回答
1 反對 回復 2017-11-14
  • 1 回答
  • 0 關注
  • 1592 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號