c語言選擇法排序,C語言選擇法排序

時間 2021-10-20 06:03:46

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樓:

排序如下:

void selectsort(recordtype r, int length) /*對記錄陣列r做簡單選擇排序,length為待排序記錄的個數*/

}}初始序列:

第1趟:12與49交換:12

第2趟:27不動 :12 27

第3趟:65與38交換:12 27 38

第4趟:97與49交換:12 27 38 49

第5趟:76與65交換:12 27 38 49 65

第6趟:97與76交換:12 27 38 49 65 76 97 完成

選擇排序法 是對 定位比較交換法(也就是氣泡排序法) 的一種改進。選擇排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)個記錄中選取關鍵字最小的記錄作為有序序列中第i個記錄。

基於此思想的演算法主要有簡單選擇排序、樹型選擇排序和堆排序。

簡單選擇排序的基本思想:第1趟,在待排序記錄r[1]~r[n]中選出最小的記錄,將它與r[1]交換;第2趟,在待排序記錄r[2]~r[n]中選出最小的記錄,將它與r[2]交換;以此類推,第i趟在待排序記錄r[i]~r[n]中選出最小的記錄,將它與r[i]交換,使有序序列不斷增長直到全部排序完畢。

拓展資料

下面也寫個例子:

由大到小時:

int main(void) /* t 發放獎品* /    }    for( i = 0; i < 10; i ++) printf("%4d",a[ i ]); /*顯示排序後的結果*/    return 0;}

由小到大時:

int main(void)/* t 發放獎品*/    }        for( i = 0; i<= 9; i ++) printf("%4d",a[ i ]); /*顯示排序後的結果*/return 0;}

3樓:1024程式設計師

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

4樓:匿名使用者

#include

#include

#define m 5

int main()

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

for(i=0;i

5樓:

#define m 5

#include

main()

//if(i!=k)//}

for(i=0;i

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

getchar();

getchar();

}自己看一下,你的程式有問題的給你註釋了.內迴圈每一次選一個最大數出來,依次放在陣列中.

6樓:匿名使用者

缺乏原始檔的宣告在第一行加,

#include

7樓:匿名使用者

#define m 5

void main()// end if

} // end the second floor}//end the first floor}//end main

c語言中的選擇排序法是什麼?

8樓:匿名使用者

選擇排序(selection sort)是來一種簡單源直觀的排序演算法。工作原理是每一次從待排序的資料元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。

以下是一個實現選擇排序的例子:

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

//將list中的n個資料,通過選擇排序演算法排序。

void selete_sort(int list, int n)}

9樓:哥們兒會_臭臭

每次選擇沒有排序元素中最小的排到前面

時間複雜度o(n^2)

空間複雜度o(n)

10樓:匿名使用者

就像這樣啊~輸入10個數進行排專序屬

main()

}sort(int x[ ],int n)}}

11樓:匿名使用者

首先從要選擇的數中選擇最大的數,將它放在第一個位置,然後從剩下的數中

版選擇最大的權數放在第二個位置,直到最後從剩下的兩個數中選擇最大的數放在倒數第二個位置,剩下的一個數放在最後位置,完成排序。

這類問題你用搜尋器搜一下就有上千上萬篇!!

12樓:帥聰虎偉兆

這是選擇復

排序。先用制a[0]與a[1]比較,當a[0]bai不交換,而用k記下來du

現在a[0]最小……zhi這樣一趟比較完後a[k]就是dao整個陣列中最小的元素,把它與a[0]交換;第二趟,從a[1]開始重複前面的操作,那麼最後a[1]就是剩下的n-1個元素中最小的……看a[0]、a[1]已經由小到大排好了,當做完n-1趟時不就把整個陣列都排好了嗎?注意:t=array[k];array[k]=array[i];array[i]=t;不是for(j=i+1;j

c語言用選擇法對陣列中整數按由小到大排序

首先以array 0 作為參照,從左到右掃描,找到最小的資料與array 0 位置交換。接下來以array 1 作為參照,重複上述過程。k i定位參照 k j找到剩下陣列中最小值 k i是為了每次迴圈都從當前項開始呀。k j 不是你說的j k 是為了記錄後面的最小項,以方便替換。 從第i個數開始,比...

c語言選擇題求高手解答急急,C語言選擇題,求高手解答,急急。。

紫翼魔狼 1 c語言的基本資料型別不包括 d 陣列型別 2 以下敘述不正確的是 c c程式的基本組成單位是函式 3 以下敘述不正確的是 d 表示式x 和 x的值是相同的 4 設x 10,y 3,則x y運算後x,y的值分別為 b 13,3 5 實現將一個串 tom 輸出到終端,下面程式段正確的是 d...

c語言選擇題,C語言程式選擇題。

1 c 2 b 3 b 4 d 5 b 6 b 7 d 8 d 9 d 10 b 11 b 12 c 13 a 14 c 15 b 16 c 17 c 18 b 19 b 20 b 囂張得很 1.d 2.b 3.b 4.c 5.b 6.b 7.d 8.d 9.d 10.d 11.b 12.a 13....