1樓:
可以,不過用昌泡排序法更簡潔些。
c語言,選擇排序法,,我排的執行結果不對,求助高手,,謝謝
2樓:小號很好使
中間的兩層for迴圈改成這樣:
for(i=0;i<=9;i++)
..for(j=i+1;j<=9;j++)else ;
其餘部分不用動。
你寫的這個為什麼非得定義乙個最小值呢?實際上,我上面這一段a[i]中就是時刻都是最小值,沒有必要。。你增加了中間變數之後,徒徒增加了你自己的腦袋負擔,搞得邏輯複雜,更容易讓自己出錯,你說是不是。
怎麼理解c語言選擇排序演算法,簡單易懂的,我不太懂
3樓:網友
第一遍,遍歷陣列所有元素選擇到最小值,並與第乙個元素交換位置,第二遍遍歷陣列,選擇除第一位外最小值,並與陣列第二位元素交換位置,後面類似,共需要進行n-1次選擇。
乙個c語言排序演算法問題,請高手來幫個忙啊
4樓:相思丶貓
我稍微修改了一下:
int a[9]=; //為保證正確,重複多個數//int a[9]=;
int b[9]=; //為0表示位置空著int temp;
for(int i=0;i<9;i++)
if(b[temp] == 0)
b[temp]=i+1;
elseb[temp+1]=i+1;
for(int k=0;k<9;k++)這個程式只能解決乙個數重複2次的情況。
假設有兩個2,分別為a2和b2,a2的位置是3,那麼4的位置就是空的,這個位置就是b2的。
因此,當有3個或更多2時,第乙個2的位置是3,則後面的幾個位置都是空的。遇到後面的2時,可從第乙個2的位置開始判斷(初始為0)是否為0,繼續向後找,直到遇到第乙個0。
下面的可以有多個重複:
void locarr()
int b[9]=; //為0表示位置空著int temp;
for(int i=0;i<9;i++)
if(b[temp] == 0)
b[temp]=i+1;
elsefor(int k=0;k<9;k++)
5樓:網友
用擂臺法記錄角標,然後輸出角標就行了。需要幫你把程式寫出來嗎?
c語言排序問題 圖中演算法**錯了
6樓:風若遠去何人留
sort的引數是char
而傳入的a是int
不匹配導致出錯。
不是排序演算法的問題。
都改成char或者都改成int就可以了。
7樓:渡邊
型別部分都錯了。。
你把int的和char的部分再理一理。
沒理清楚再告訴我吧。
c語言,氣泡排序法,我的程式為什麼不能排序啊?
8樓:網友
for(k=0;k<9-i;k++)這裡出錯了,i為10,所以一直沒有進行排序。
照樓主你的程式,應該改為。
for(k=0;k<9-j;k++)
i變為j修改後。
#include
int main()
int a[10];
int i,j,k,t,s;
printf("please enter 10 numbers:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<9;j++)
for(k=0;k<9-j;k++)
if(a[k]>a[k+1])
t=a[k];
a[k]=a[k+1];
a[k+1]=t;
for(s=0;s<10;s++)
printf("%d",a[s]);
return 0;
c語言排序問題
9樓:你真的良心
只給你建議,程式設計還是要自己來的。
先從小到大排序,然後再求最大數。
1排序 #define n 256
main()
for(i=1;i<=n;i++)
printf("%d",a[i]);
2最大數。#include
int max(int *p,int n)for(i=0;imax)
main()
int a[255];
int i,*p=a,k;
for(i=0;i<255,i++)
printf("%5d",*(p+1));
k=max(a,255);
你要做的就是合二為一,我可能也有有錯的地方,自己慢慢體會吧,多看些題,明白每個程式的功能。
10樓:雨裡de風
int n=1;
a[max]=a[0];
for(i=1,i<256,i++)
if a[max]//把第乙個數與其後面的數比較,若小於後面的數則交換位置,讓大的與之後的比較。
printf("第%d個數最大,它是%d",n,a[max]);
system("pause");
c語言忘的差不多了,格式就忘了。。。演算法你看看這個行不,能不能執行就自己改了。
11樓:子祥盧
下面**是用選擇排序的思想寫的,只是主幹部分,希望看懂自己修改int i,k = 0;
int max = a[0]; //max 記錄最大值 k 記錄最大值所對應的下標 初始預設 a[0]最大。
for(i = 0; i < 256;i++)如果陣列中有多個數相同而且最大的話,記錄下來的是第乙個。
12樓:網友
int max = 0;
int index = -1;
for (int i = 0; i < 256; i++)最後max就是最大的數,index就是要求的索引值。
13樓:菜刀撒
很簡單這樣。
定義乙個int flag 用來記錄你最大資料的下標;
然後定義乙個數max,max的型別和陣列中的資料型別相同t max;
置max=a[0];置flag=0;
然後做迴圈。
for(int i=0;i<256;i++)這樣就找出了那個數而且知道了它的下標。
14樓:環凡邇
int i=0,max=0,max_num=0;
max=a[0];
max_num=0;
for(i=1;i<256;i++)
最後的max_num就是最大值的序號。
c語言字母排序問題,C語言字母排序問題
很有意思題 今天太晚了,明天給你做吧 btw,樓主是哪個學校的,現在國外大學這樣學c的好像不多了. 雨過天晴日丶 include include string包含gets,puts,strlen函式 void main puts n 輸出排序後的字元陣列n 在vc 6.0執行了下,可以。 星雨新痕 ...
C語言氣泡排序問題,c語言氣泡排序問題!?
文文的鵬鵬 lz的排序方法是錯誤的。比如,輸入8 6 12 0,按照lz的演算法,最終的排序結果是6 8 12 0。lz的演算法只能保證每相鄰的兩個數小在前大在後,但整體結果並不是這樣,所以排序還是要雙重迴圈的。 排序方法挺多的,各有各的優缺點的,有些人只是習慣了用某一個而已。 哈哈,可以用選擇排序...
C語言程式設計問題 給元素排序,C語言 排序問題
提問的藝術 中文版 在網路世界裡,當提出乙個技術問題時,你能得到怎樣的?這取決於挖出答案的難度,同樣取決於你提問的方法。本指南旨在幫助你提高發問技巧,以獲取你最想要的答案 不想掩飾對這樣一些人的蔑視 他們不願思考,或者在發問前不去完成他們應該做的事。這種人只會 時間 他們只願索取,從不付出,無端消耗...