C語言選擇排序求改錯,C語言程式設計 選擇法排序

時間 2025-01-11 18:25:07

c語言程式設計:選擇法排序

1樓:大野瘦子

#include

#define m 5

void main()

int b[m],i,j,t,k;

for(i=0;iscanf("%d",&b[i]);

for(i=0;ifor(k=i,j=i+1;jif(b[k]k=j;

if(i!=k)

t=b[i];

b[i]=b[k];

b[k]=t;

for(i=0;iprintf("%d ",b[i]);

錯在大括號位置加錯了。

c語言選擇排序詳解。

工作原理是每一次從無序組的資料元素中選出最小(或最大)的乙個元素,存放在無序組的起始位置,無序組元素減少,有序組元素增加,直到全部待排序的資料元素排完。

以公升序為例的**:

**:#include

void selectionsort(int *num,int n)

int i = 0;

int min = 0;

int j = 0;

int tmp = 0;

for(i = 0;i < n-1;i++)

min = i;//每次講min置成無序組起始位置元素下標。

for(j = i;j < n;j++)//遍歷無序組,找到最小元素。

if(num[min]>num[j])

min = j;

if(min != i)//如果最小元素不是無序組起始位置元素,則與起始元素交換位置。

tmp = num[min];

num[min] = num[i];

num[i] = tmp;

此處空一行)

int main()

int num[6] = ;

int i = 0;

selectionsort(num,6);//這裡需要將數列元素個數傳入。有心者可用sizeof在函式內求得元素個數。

for(i = 0;i < 6;i++)

printf("%d ",num[i]);

return 0;

2樓:1024程式設計師

c語言經典例子之選擇法排序。

3樓:哥們兒會_臭臭

選擇排序是一種簡單直觀的排序演算法。

工作原理:每一次從待排序的資料元素中選出最小(或最大)的乙個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。

效能:選擇排序是不穩定的排序方法(比如序列[5, 5, 3]第一次就將第乙個[5]與[3]交換,導致第乙個5挪動到第二個5後面)。

選擇排序的時間複雜度是o(n^2)

思想:n個記錄的檔案的直接選擇排序可經過n-1趟直接選擇排序得到有序結果:

初始狀態:無序區為r[1..n],有序區為空。

第1趟排序。

在無序區r[1..n]中選出關鍵字最小的記錄r[k],將它與無序區的第1個記錄r[1]交換,使r[1..1]和r[2..

n]分別變為記錄個數增加1個的新有序區和記錄個數減少1個的新無序區。

第i趟排序。

第i趟排序開始時,當前有序區和無序區分別為r[1..i-1]和r(i..n)。

該趟排序從當前無序區中選出關鍵字最小的記錄 r[k],將它與無序區的第1個記錄r交換,使r[1..i]和r分別變為記錄個數增加1個的新有序區和記錄個數減少1個的新無序區。

c語言版**:

#include

#include

#define max_size 101

#define swap(x, y, t) (t) = (x), x) = (y), y) = (t))

void sort(int, int); /* selection sort */

int main()

for (i = 0; i < n; i++)

sort(list, n);

printf(" sorted array:");

for (i = 0; i < n; i++)/* print out sorted numbers */

printf("%d ", list[i]);

printf("");

return 0;

void sort(int list, int n)}

c語言 誰能講解一下選擇排序法以及有效排序。

4樓:帛建設雲風

用[4,1,3,2]作例子吧。

1)找出最小的元素---4,1),即用4和1比較,是有效排序,比較結果是1比較小,因此1再和3,2比較,(1,3),(1,2)這兩次比較就不是有效比較了(1在3,2前面且比它們小)

因此第一輪排序為[1,4,3,2]

最小元素和第乙個元素互換。

2)在剩餘序列中繼續找最小的元素(即排除了1)--4,3)比較,是有效排序。3比較小,因此3再和2比較,(3,2)是有效排序。找出最小的元素2。

第二輪排序為[1,2,3,4]

2和第二個元素4互換。

3)依次類推,(3,4)不是有效排序了。

因此,最後結果為[1,2,3,4]

有效排序為(4,1)

程式這東西要自己想,況且這個應該挺容易想出來的。。。

c語言 誰能講解一下選擇排序法以及有效排序。

5樓:網友

一般有兩種選擇排序法:(不明白有效排序具體要求是什麼?)一、冒泡法容易理解,但是效率低,主程式如下:

for (i=0;ia[i+1]) //

以上程式的結果是將陣列的最大值放在最後;

在這個程式的基礎上再外迴圈n遍,就可以把陣列從小到大全排序。

二、雙迴圈 高效但是稍複雜:

main()

if(i!=p)

printf("%d",a[i]);

本例程式中用了兩個並列的for 迴圈語句,在第二個for 語句中又巢狀了乙個迴圈語句。第乙個for 語。

句用於輸入10 個元素的初值。第二個for 語句用於排序。本程式的排序採用逐個比較的方法進行。

在i 次迴圈時,把第乙個元素的下標i 賦於p,而把該下標變數值a[i]賦於q。然後進入小迴圈,從a[i+1]起到最後乙個元素止逐個與a[i]作比較,有比a[i]大者則將其下標送p,元素值送q。一次迴圈結束後,p 即為最大元素的下標,q 則為該元素值。

若此時i≠p,說明p,q 值均已不是進入小迴圈之前所賦之值,則交換a[i]和a[p]之值。 此時a[i]為已排序完畢的元素。輸出該值之後轉入下一次迴圈。

對i+1 以後各個元素排序。

c語言插入排序問題

6樓:聽不清啊

如果執行此函式,a陣列中小於a[0]的元素將會丟失。因為在迴圈中a[j+1]=a沒有機會執行。

函式修改如下:

原a陣列已是公升序時執行時間最少。a[10]=原a陣列已是降序時執行時間最多。a[10]=

c語言程式設計改錯,c語言程式設計改錯

include include float area float a,float b,float c 當子函式不在main函式之前的時候,這裡要有函式宣告 呼叫子函式不用加引數型別 float area float a,float b,float c 10 子函式應該有返回型別 include in...

c語言選擇題答案為c求解釋謝謝,C語言選擇題,答案為C,求解釋,謝謝。

答案是c沒問題 先打出studend,然後 b退後1位把游標移到d下面,再打t把d覆蓋了,再向後列印 r把游標移到這一行的開頭s下面,最後輸出s把s覆蓋了 我試了試,的確是s,不過你printf studend bt rs n 在他後面加一個換行就好了,因為列印輸出後面有個 請按任意鍵繼續.當你的 ...

c語言程式設計插入法排序,C語言程式設計插入法排序

貌似風輕 for j i j 11 j a j 1 b 你這步會把 a i 後面的數全變為 b include void main for i 0 i 10 i a i n 再將n插入 break 要用break結束 for i 0 i 11 i include stdio.h void sort ...