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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

选择加冒泡排序法与找鞍马之总结与感受

發布時間:2025/4/14 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 选择加冒泡排序法与找鞍马之总结与感受 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

選擇排序法
本題要求將給定的n個整數從大到小排序后輸出。

輸入格式:
輸入第一行給出一個不超過10的正整數n。第二行給出n個整數,其間以空格分隔。

輸出格式:
在一行中輸出從大到小有序的數列,相鄰數字間有一個空格,行末不得有多余空格。

輸入樣例:
4
5 1 7 6
輸出樣例:
7 6 5 1
一:實驗代碼

include<stdio.h>

int main()
{
int i, index, k, n, temp;
int a[10];
scanf("%d", &n);
for(i=0; i<n; i++)
scanf("%d", &a[i]);
for(k=0; k<n-1; k++){
index=k;
for(i=k+1; i<n; i++)
if(a[i]>a[index])
index=i;
temp=a[index];
a[index]=a[k];
a[k]=temp;
}
printf("%d",a[0]);
for(i=1;i<n;i++)
printf(" %d", a[i]);

return 0;

}
二:流程圖

三:總結
1)本題在尋找最大值之后的兩個數的下表值想了我好久好久,慢慢的通過自己去排序 慢慢騎悟出道理.
2)在這天編程的路上 感覺就是要你做的住 坐得住的話 加上認真思考與網上(多與同學交流還是有用的)的資料還是能懂得

冒泡排序

輸入1個正整數n(1<=n<=10),然后輸入n個整數并存放在數組中,將這n個整數從大到小排序后輸出,相鄰數字間有一個空格,行末不得有多余空格。

輸入格式:
輸入第一行給出一個不超過10的正整數n。第二行給出n個整數,其間以空格分隔。

輸出格式:
在一行中輸出從大到小有序的數列,相鄰數字間有一個空格,行末不得有多余空格。

輸入樣例:
4
75 71 77 76
輸出樣例:
77 76 75 71

一:實驗代碼

include<stdio.h>

int main()
{
int i,j,n,max;
scanf("%d",&n);
int a[10];
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(a[j]<a[j+1]){
max=a[j];
a[j]=a[j+1];
a[j+1]=max;
}
}
}
printf("%d",a[0]);
for(i=1;i<n;i++){
printf(" %d",a[i]);
}
return 0;
}

二:思路
1)最開始還是得會輸入數組a[n];
2)弄清它的原理,其實原理很簡單 就是相鄰兩個數進行比較,在第一輪進行n-1次比較,以此類推到n-i=1,就是最后一次
3)第三步就是對兩個數的交換 有了選擇排序的排序 這個就輕而易舉了;
4)輸出元素

三;問題
最主要的就是最后輸出的時候要有這段代碼
printf("%d",a[0]]; 不要這個的話就會出現段錯誤
但我的for循環里i是從0開始的都有錯嗎?這個很不理解

找鞍馬

一個矩陣元素的“鞍點”是指該位置上的元素值在該行上最大、在該列上最小。

本題要求編寫程序,求一個給定的n階方陣的鞍點。

輸入格式:
輸入第一行給出一個正整數n(1≤n≤6)。隨后n行,每行給出n個整數,其間以空格分隔。

輸出格式:
輸出在一行中按照“行下標 列下標”(下標從0開始)的格式輸出鞍點的位置。如果鞍點不存在,則輸出“NONE”。題目保證給出的矩陣至多存在一個鞍點。

輸入樣例1:
4
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9
輸出樣例1:
2 1
輸入樣例2:
2
1 7
4 1
輸出樣例2:
NONE

一:實驗代碼

include<stdio.h>

int main()
{
int i,j,n,flag=1,k=0,p=0,H=0;
int a[6][6];
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
if(n==1)
printf("0 0");
else
{
for(i=0;i<n;i++)
{
H=i;
for(p=0;p<n;p++)
{
if(a[i][k]<=a[i][p])
{
k=p;
}
}
for(j=0;j<n;j++)
{
if(a[H][k]>a[j][k])
{
H=j;
break;
}
}
if(i==H)
{
flag=0;
break;
}
}
if(flag==0)
printf("%d %d",i,k);
else
printf("NONE");
}
return 0;
}

二:實驗思路

三:思路與感想
1)看了我的圖之后我會告訴你 我在y=i與其中三個if語句上面想了大概6個小時 就不停的圍繞在這個上面 不停地利用數據來分析 它在里面怎么運行的 這個代碼是我哥想的 我就按他的意圖一步一步來寫 不停地找錯 不斷地改 知道我最終的代碼出現.
2)感覺這個題目就是腦子要活 加上數據的分析 很快的就會出來 題目意思很簡單找某一行的最大值 在這一行的最大值所在的列判斷是否為最小值,但要寫出這個代碼我認為不簡單,并且還要利用中間值進行過度。
3)在這個題做了之后還在不斷地回味中 體驗其中的奧妙 加油

轉載于:https://www.cnblogs.com/chenxinxin/p/10579378.html

總結

以上是生活随笔為你收集整理的选择加冒泡排序法与找鞍马之总结与感受的全部內容,希望文章能夠幫你解決所遇到的問題。

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