C語言 我的排序演算法有問題嗎?

時間 2025-03-07 07:50:25

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語言 排序問題

提問的藝術 中文版 在網路世界裡,當提出乙個技術問題時,你能得到怎樣的?這取決於挖出答案的難度,同樣取決於你提問的方法。本指南旨在幫助你提高發問技巧,以獲取你最想要的答案 不想掩飾對這樣一些人的蔑視 他們不願思考,或者在發問前不去完成他們應該做的事。這種人只會 時間 他們只願索取,從不付出,無端消耗...