C語言 給定一陣列,包涵n個元素,設計功能函式,使用選擇排序

2021-03-27 06:37:57 字數 6306 閱讀 8645

1樓:

//選擇排序演算法,按從小到大順序

void select_sort(int *arr,int n)//如果最小元素的下標不是後面n-i+1的未排序序列的第一個元素,則需要交換第i個元素和後面找到的最小元素的位置

if(k != i)}}

c語言程式設計題 題目描述 使用氣泡排序法對陣列元素從小到大進行排序,要求輸出每一趟排序後的陣列內容( 5

2樓:璐人釔

#include "stdafx.h"

#include

#include

using namespace std;

void sort(int arry,int counts)//氣泡排序法

}for (int k=0;k='0'&&c<='9')}sort(arry,counts);

system("pause");

return 0;}

3樓:育知同創教育

假設陣列有10個數

#include

int main()

;int i,j,t;

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

for(int k=0;k<10;k++)}}}

求解c語言程式設計題:編寫函式用選擇排序法對陣列中的資料進行從小到 大的排序。

4樓:我是小旋風是我

void sort(int a, int n)}

c語言程式設計。。。輸入一陣列,按從大到小的順序排列(提示:可用選擇排序、氣泡排序或插入排序的任意一種)。 10

5樓:劉海桃的女兒

選擇排序:選擇法排序是一種簡單的容易實現的對資料排序的演算法。

以整形陣列元素為例,有陣列a[10](以c語言為例描述),即a[0],a[1],…,a[8],a[9](假設其元素均互不相同)。要求對其元素排序使之遞增有序。

首先以一個元素為基準,從一個方向開始掃描,比如從左至右掃描,以a[0]為基準。

接下來從a[0],…,a[9]中找出最小的元素,將其與a[0]交換。

然後將基準位置右移一位,重複上面的動作,比如,以a[1]為基準,找出a[1]~a[9]中最小的,將其與a[1]交換。

一直進行到基準位置移到陣列最後一個元素時排序結束(此時基準左邊所有元素均遞增有序,而基準為最後一個元素,故完成排序)。

以下為一個用c描述的函式實現上述排序:

void sort(int array,int n)

}printf("排序結果:");

for( i = 0; i < 10; i ++ ) //依次輸出排序結果

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

printf("\n");

}pascal為例子

procedure bubble_sort(var l:list);

vari,j:position;

begin

for i:=first(l) to last(l)-1 do

for j:=first(l) to last(l)-i do

if l[j]>l[j+1] then 4 swap(l[j],l[j+1]);

//交換l[j]和l[j+1]

end;

下面使用c++語言編寫

#include

void main()

cout<

}c語言中的排序方法選擇方法是首先從要選擇的數中選擇最大(或最小)的數,將它放在第一個位置,然後從剩下的數中選擇最大(或最小)的數放在第二個位置,直到最後從剩下的兩個數中選擇最大(或最小)的數放在倒數第二個位置,剩下的一個數放在最後位置,完成排序。

6樓:匿名使用者

一個一個的進行比較,設一個min,並把第一個值賦給它,當遇到比他小的數的時候進行互換,直到最後。

7樓:匿名使用者

#include

main() }

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

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

8樓:_要掵

可以申請一個臨時變數

來幫助排序。

int a[5] = ;

int temp; //臨時變數

int i,j;

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

for(j=0;j<4;j++)}

c語言:用選擇排序法對一個陣列裡的數進行排序,從小到大,要求選出小的進行排序

9樓:會飛的小兔子

#include

intmain()

;intj=0;

inttmp=0;

intm=sizeof(a)/sizeof(a[0]);//s陣列大小

for(i=0;i}}

for(i=0;i

printf("\n");

return0;

}擴充套件資料

c語言排序法

把一個陣列進行排序可以使用選擇排序法。選擇排序法的原理在是每一趟迴圈尋找陣列中最小的數的下標,然後按照遞增的順序放入陣列中。

迴圈找出最小數的下標,該下標用min儲存,直到比較完整個陣列,即可找到最小的數,然後將該數放入陣列的第一位,這樣就排好了一個元素。

需要再巢狀一層外層迴圈即可排好所有元素。第二次迴圈就不用再比較第一個元素了,因為第一個元素已經排好,依次類推,每一次迴圈就會排好一個,進行n-1次迴圈即可排好所有元素。

10樓:大野瘦子

這樣:int *a = (int *)malloc(sizeof(int) * n); //動態分配陣列空間 ,有幾個元素,n就是幾。

for(i=0; i

sort(a, n);

for(j=0; j

void sort(int *a, int n)}}

注意事項

1、選擇排序法是將序列分為兩段,有序前列和無序後列,每次查詢無序後列中最大元素,將其插入到有序前列的最末尾處,直至無序後列最後一個元素,最終排序後的序列為降序序列。

2、適用於包括陣列和向量在內的序列。

3、選擇排序與氣泡排序的區別是選擇排序每次遍歷時會記住最大元素的位置,只進行一次交換,而氣泡排序每次遍歷時會交換兩個順序不合法的元素。

演算法程式:

#include "stdafx.h"

#include

using namespace std;

void selectsort(int a,int n)

int temp = a[max];  //交換無序後列中首元素與最大元素的位置

a[max] = a[i];

a[i] = temp;}}

11樓:匿名使用者

#include

void sorted(int a,int n)if(k!du=i)}

}int main(){

int n,i,a[255];

printf("請輸入zhi資料總量n(1-254):

");scanf("%d",&n);

printf("請輸入%d個數:dao",n);

for(i=0;i的數

內組:");

for(i=0;i容的陣列:");

for(i=0;i

c語言程式設計——選擇排序法,要求:由主函式呼叫排序子函式,對n個整數進行從小到大的排序,謝了

12樓:匿名使用者

#include

#define size_n 20 //size_n is the size of the array

void sortfun(int a, int n)}void main()

sortfun(a,size_n); //呼叫排序函式for(int j=0;j

13樓:倒黴熊

#include

void sort(int a,int n) //選擇排序}if(c !=i) //進行交換。}}int main()

;sort(a,10);

int i;

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

getchar();

return 0;}

用c語言程式設計編寫一個函式,用選擇法對主函式中的一個字元陣列進行從大到小的排序。

14樓:聽不清啊

#include

void sort(char s)

}int main()

15樓:是你吻開筆墨

#include

void xuanze(char a,int n)//選擇排序if(k!=i)}}

int main()

;xuanze(a,n);

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

}用選擇排序,每次把ascii碼最大的字元放到字元數回組答的前面

16樓:匿名使用者

#include

#include

void sort(char s[51],int n)if(k != i) }}

int main() ;

int i,n = 10;

printf("排序前:\n");

for(i = 0; i < n; ++i)printf("%s\n",s[i]);

sort(s,10);

printf("\n排序後:\n");

for(i = 0; i < n; ++i)printf("%s\n",s[i]);

printf("\n");

return 0;}

設計c語言程式,用一維陣列輸入n個整數,將這n個整數按從大到小排列

17樓:李凱新

給你看看c語言的三種排序方法吧,這是我們老師給總結的,你看懂後就自己在寫這個程式吧!

一、冒泡法(起泡法)

演算法要求:用起泡法對10個整數按升序排序。

演算法分析:如果有n個數,則要進行n-1趟比較。在第1趟比較中要進行n-1次相鄰元素的兩兩比較,在第j趟比較中要進行n-j次兩兩比較。

比較的順序從前往後,經過一趟比較後,將最值沉底(換到最後一個元素位置),最大值沉底為升序,最小值沉底為降序。

演算法源**:

# include

main()

/*輸出排序結果*/

printf("the sorted numbers: ");

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

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

printf("\n");

}演算法特點:相鄰元素兩兩比較,每趟將最值沉底即可確定一個數在結果的位置,確定元素位置的順序是從後往前,其餘元素可能作相對位置的調整。可以進行升序或降序排序。

二、選擇法

演算法要求:用選擇法對10個整數按降序排序。

演算法分析:每趟選出一個最值和無序序列的第一個數交換,n個數共選n-1趟。第i趟假設i為最值下標,然後將最值和i+1至最後一個數比較,找出最值的下標,若最值下標不為初設值,則將最值元素和下標為i的元素交換。

演算法源**:

# include

main()

printf("the sorted numbers: ");

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

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

printf("\n");

}演算法特點:每趟從無序序列中取出第一個數插入到有序序列的合適位置,元素的最終位置在最後一趟插入後才能確定位置。也可是先用迴圈查詢插入位置(可從前往後或從後往前),再將插入位置之後的元素(有序列中)逐個後移一個位置,最後完成插入。

該演算法的特點是在尋找插入位置的同時完成元素的移動。因為元素的移動必須從後往前,則可將兩個操作結合在一起完成,提高演算法效率。仍可進行升序或降序排序。

這應該會對你很有用的,好好學,把它弄懂!祝你好運!

18樓:倒黴熊

#include

#define n 5

int main()

for(i =0;i

}for(i =0;i

return 0;}

c語言如何返回陣列,c語言如何返回一個陣列?

只能返回一個數,陣列不能返回,以陣列為函式引數傳給形參時,由於是陣列名傳遞 地址傳遞 實參和形參共用一段記憶體,對形參更改時實參的值也會改變,所以不需要返回值 return amounts 你返回的是地址,所以函式型別應該是指標型的才能返回。即 extend double extend double...

c語言題目輸入n個數到一維陣列a中求均方差

c語言中陣列定義的時候必須制定資料的個數,如 1 int a 10 2 define n 10 int a n n 為常量 int n 10 int a n 這種定義陣列的方式是錯誤的,因為n是變數 直接用陣列名字呼叫即可。如 int a 10 0,1,2,3,4,5,6,7,8,9 定義一個陣列變...

C語言中,二維陣列a指的是什麼,C語言中,一個二維陣列a59中a4指的是什麼?

二維陣列 a 5 9 中a 4 指的是a 4 0 的地址,a 5 9 相當於有5個一位陣列每個陣列長度為9a 4 相當於第四個陣列的首地址,a 4 1等於a 4 1 滿意請採納,不懂請追問 c語言中,一個二維陣列 a 5 9 中a 4 指的是 a 4 0 a 4 8 的一個一維陣列的首地址,也即是a...