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 首先以array 0 作為參照,從左到右掃描,找到最小的資料與array 0 位置交換。接下來以array 1 作為參照,重複上述過程。k i定位參照 k j找到剩下陣列中最小值 k i是為了每次迴圈都從當前項開始呀。k j 不是你說的j k 是為了記錄後面的最小項,以方便替換。 從第i個數開始,比... 紫翼魔狼 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... 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....c語言用選擇法對陣列中整數按由小到大排序
c語言選擇題求高手解答急急,C語言選擇題,求高手解答,急急。。
c語言選擇題,C語言程式選擇題。