用選擇法對陣列中整數按由小到大排序,程式中呼叫sort

時間 2021-08-11 18:00:45

1樓:匿名使用者

需要理解計算的思路,即所謂演算法,然後就可以理解迴圈的寫法了所謂選擇法,就是在當前陣列中挑選一個最大(或最小的,看你排序順序)的數出來,然後把它與第1個數進行交換,這樣第1個數一定是其後所有數中最大的;如果第1個數搞好了,在從第2個數到所有數結束範圍再算一次,那麼第2個數就會被換成除第1個數外最大的數了,依此類推,每次都找剩下數中最大的排到排頭位置,做完倒數第2個數時陣列就按照從大到小排好了順序。

分析:假設n個資料(下標範圍是0~n-1),每次排頭的陣列元素下標是0,1,2,...,n-2,(最後一個不用計算了,已經沒有多餘元素跟它比較了);對於選定的這個排頭陣列下標,需要拿這個下標之後到最後的數進行比較,假設當前排頭下標是2,那麼需要比較的數是3,4,5,...

,n-1

迴圈的同時我們生成這兩組數:用i迴圈生成0~n-2,即每次迴圈i的取值是0~n-2,迴圈起始條件是i=0,結束條件是i

這樣理解了吧,實際上就是怎麼生成自己想要的數列而已。

2樓:慶年工坊

i從0開始,k=i,j從i+1開始,如果陣列j號元素比k號元素小,k=j,一直比較到陣列最後一個元素,這樣就找出最小一個的下標k,然後k號與i號交換,接著找下一個i,直到最後

用選擇法對10個整數排序。10個整數用scanf函式輸入。

3樓:問明

#include

void main()

int i,j,min,temp,a[11];

printf("enter data;\n");

for(i=1;i<=10;i++)

scanf的功能用一句話來概括就是「通過鍵盤給程式中的變數賦值」。該函式的原型為:

#include

int scanf(const char*format,...);

它的用法,或者說有兩種格式。

scanf("輸入控制符",輸入引數);

例子:#include

int main(void)

int i;

i=10;

printf("i=%d\n",i);

return 0;

4樓:匿名使用者

/**/

# include

//輸入整型資料

void input_num(int *a);

//降序排列並輸出

void sort_and_show(int * a);

//輸出陣列

void show(int * a);

int main(void)

void input_num(int *a)}void sort_and_show(int * a)}}//排序後輸出

show(a);

return;

}void show(int * a)

printf("\n");

return;}/*

輸出結果:

----

.......你的資訊.......

請輸入10個整型資料:

78 88 99 6 5 2 4 44 55 20降序排列並輸出

99 88 78 55 44 20 6 5 4 2------*/

5樓:莞爾°落

用冒泡法解決挺方便的,程式如下:

#include

void main()

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

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

6樓:匿名使用者

#include

void sort(int* a, int n)}}}void output(int* a,int n)void input(int* a,int n)int main()

7樓:匿名使用者

main()

在tc環境下執行一下,看看是不是你想要的結果。

8樓:匿名使用者

#include

void sort(int data)//選擇法10個整數排序temp=data[i];

data[i]=data[index];

data[index]=temp;}}

int main()

選擇法排序函式是sort()已經編寫了。可以執行,已經測試了。

9樓:

#include

using namespace std;

#define size 10

void main()

;for(i=1;i<=size;i++)cin>>a[i];

for(i=1;i<=size;i++)

cout

a[0]=a[i];

a[i]=a[min];

a[min]=a[0];}}

for(i=1;i<=size;i++)

cout<

cout<

10樓:o破天

#include

main()

for(i=0;i<10;i++) printf("%d ",a[i]);}

c語言,用選擇法對陣列中10個整數按由小到大排序?求解釋!!!

11樓:匿名使用者

首先以array[0]作為參照,從左到右掃描,找到最小的資料與array[0]位置交換。

接下來以array[1]作為參照,重複上述過程。

。。。k=i定位參照

k=j找到剩下陣列中最小值

12樓:匿名使用者

k=i是為了每次迴圈都從當前項開始呀。

k=j(不是你說的j=k)是為了記錄後面的最小項,以方便替換。

13樓:匿名使用者

從第i個數開始,比較後面的數,把最小的和第i個交換當i=0時,交換完成,a[i]就是從第0個開始到最後一箇中最小的那個當i=1時,交換完成,a[i]就是從第1個開始到最後一箇中最小的那個.......

k是最小數的下標,然後a[k]和a[i]的數字交換,a[i]就是最小的了

14樓:匿名使用者

如程式所給出的sort函式,k=i是為了設定每次排序的開始,是參照點;j=k呢,就是將此輪比較中最小的個數賦值給陣列中的第i個,完成此次選擇中最小數的選擇。第一次排序從陣列中第一個數開始,通過比較,確定最小的數,並通過t=array[k];array[k]=array[i];array[i]=t;

,完成賦值給a[o].以此類推,第二次由陣列中第二個陣列元素開始,也就是a[1]開始,比較陣列中以下元素的大小,選擇出餘下元素中最小的,賦值給a[1],完成此次選擇。以此類推,得到一個完整有序的陣列。

其中,比較次數分別為n-1,n-2,n-3、、、總次數為(n-1)n/2。你仔細想一下就會出來的。。。:-d

15樓:改心水

選擇排序的思想是:每一趟的排序過程都是在當前位置後面剩下的待排序物件中選出值最小的那個,然後放到當前位置上。

該程式中k的定義主要是為了存放陣列中最小數的位置。然後通過t=array[k];array[k]=array[i];array[i]=t;這三條語句,再把這陣列中最小的數字放到前面。注意c語言當中的「=」不是等於,只是一種賦值運算。

其中if(array[j]

16樓:匿名使用者

1、i=0, k=0,j=1,如果array[1]和array[0]比較,然後"k=1 t=array[k];array[k]=array[i];array[i]=t;"

表示將array[0]和array[1]較小的值賦給array[0];然後再將array[1]和array[2]作比較,將

較小的賦給array[0],如此類推,最後將最大值賦給array[0];

2、i=1, k,j重新賦值,按照1的結論將把除array[0]之外的所有值中最大的賦給array[1];

3、以此類推,將array升序排列。

空函式sort 讓 k=i是為了只比較除最大數值之外的數值,k=j是為了在array[j]=array[k],則不用k=j,直接將小值賦給array[i]。

不知道你能不能看懂 哈哈

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

17樓:問明

#include

using namespace std;

int main()

void select_sort(int arry,int n)int a[10],i;

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

cin>>a[i];

cout

for(i=0;i<=9;i++)            //輸出10個已經排好序的數

cout

void select_sort(int arry,int n)   //形參arry是陣列名

int i,j,k,t;

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

k=i;

for(j=i+1;jif(arry[j]k=j;

t=arry[k];

arry[k]=arry[i];

arry[i]=t;

執行結果:

18樓:聽不清啊

#include

int main()

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

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

printf("\n");

return 0;}

19樓:倜瀤

#include "stdio.h" main() for(i=0;i<10;i++) printf("%d",a[i]); }

20樓:大地炊煙火

#include

void main()

{int a[10],i,j,k,t;

printf("please input 10 numbers:\n");

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

scanf("%d",&a[i]);

for(i=0;i<10;i++){

k=i;

for(j=i+1;j<10;j++){

if(a[k]

編寫函式,用選擇法對陣列中10個整數按由小到大排序,在主函式中呼叫此函式

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

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

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

問明 include using namespace std int main void select sort int arry,int n int a 10 i for i 0 i 9 i cin a i cout for i 0 i 9 i 輸出10個已經排好序的數 cout void sel...

用選擇法對整數按由大到小的順序排序

選擇法的原理是將每一個元素與他後面的元素分別比較,如果有比他大的,則交換,所以有2重迴圈,第一重是參加比較的元素,第二重是參加比較的元素分別與後面 這個記住,是他後面的元素,關鍵是後面二字 的元素分別比較 void sort int x,int n 交換 這樣就可以理解了,假設陣列有n個元素,那麼當...