當前位置:首頁 » 操作系統 » c選擇排序演算法

c選擇排序演算法

發布時間: 2022-03-03 21:02:39

c語言選擇排序法

外面的for循環,依次從隊列中取出一個數用來比較
裡面的for循環,用來比較上面選擇的數據與後面的每個數據。

Ⅱ 求 c語言選擇排序法和 冒泡排序法代碼!

選擇排序:

void select_sort(int a[],int n) //傳入數組的要排序的元素個數

{int i,j,min,t;

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

{ min=i; //min:當前最小值下標

for(j=i+1;j<n;j++) //掃描餘下的部分

if(a[min]>a[j]) //若有其它元素更小,就記錄其下標

min=j;

if(min!=i) //保若最小值不在排序區首位,就換到首位

{t=a[min]; a[min]=a[i]; a[i]=t;}

}

}

冒泡排序:

void bubble_sort(int a[], int n) //傳入數組的要排序的元素個數

{ int i, j, t;

for (j=0; j<n-1; j++) //n個元素比較n-1輪

for (i= 0; i<n-1-j;i++) //比較相信的兩個數

if(a[i]>a[i+1]) //若大小順序不符,就交換

{t=a[i]; a[i]=a[i+1]; a[i+1]=t;

}

Ⅲ C語言關於選擇排序法的演算法問題

首先,你這是冒泡排序不是選擇排序。
書上的演算法沒啥優點,不管時間復雜度還是所佔用得空間都比你寫的大,不建議使用。可能這么寫唯一的優點是邏輯性更強,便於學生理解吧

Ⅳ C語言選擇法排序

#include<stdio.h>

#defineM 5

void main()

{

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

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

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

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

{

for(k=i,j=i+1;j<M;j++)

if(b[k]<b[j])

k=j;

if(i!=k)

{

t=b[i];

b[i]=b[k];

b[k]=t;

}

}

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

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

}

錯在大括弧位置加錯了。

代碼:

#include<stdio.h>

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] = {5,4,3,2,9,1};

int i = 0;

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

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

{

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

}

return 0;

}

Ⅳ C語言選擇排序法

人家的效率高,交換次數少。比如3、2、1三個數。
你是第一輪3和2換變成2、3、1,再2和1換,變成1、3、2,第二輪3和2換變成1、2、3
他的是第一輪從後面選一個比3小的最小的數,K保存這個數的下標,先k是1,再k是2,一輪循環玩了才3和1交換,變成1、2、3,第二輪不交換。
你的演算法沒輪交換次數不定,看數據,他的每輪最多交換一次,特別是數據多時用他的效率高很多,因為給K賦值比交換快很多

Ⅵ 關於C選擇排序

K=J就是循環復制最小的數給K,這樣無論冒泡多少次都可以實現最小的排在最前面!

Ⅶ C語言選擇排序演算法

voidbubble(inta[],intn)
{
inti,k,temp;
for(k=0;k<n-1;k++)
{
for(i=k+1;i<n;i++)
{
if(a[k]>a[i])
{
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
}
for(i=0;i<n;i++)
printf("%d",a[i]);
printf(" ");
}

Ⅷ C語言選擇排序法有哪些

從大到小,從小到大。中心就是這兩種。

Ⅸ C語言:用選擇排序法對一個數組里的數進行排序,從小到大,要求選出小的進行排序

#include<stdio.h>

intmain()

{

inti=0;

inta[10]={0,5,2,3,6,9,8,7,4,1};

intj=0;

inttmp=0;

intm=sizeof(a)/sizeof(a[0]);//s數組大小

for(i=0;i<m-1;i++)//比較m-1次

{

for(j=0;j<m-i-1;j++)//最後一次比較a[m-i-1]與a[m-i-2]

{

if(a[j]>a[j+1])//如果a[j]比a[j+1]大則交換內容

{

tmp=a[j+1];

a[j+1]=a[j];

a[j]=tmp;

}

}

}

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

{

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

}

printf(" ");

return0;

}

(9)c選擇排序演算法擴展閱讀

C語言排序法

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

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

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

Ⅹ C 冒泡排序和選擇排序

上面的冒泡,下面的是選擇排序

第一層循環可以修改,不過第二層循環也要隨之更改:

for(int i=0;i<Count-1;i++)
{
for(int j=Count-1;j>i;j--)

熱點內容
編譯原理斷言有哪幾種 發布:2024-11-15 14:25:29 瀏覽:200
資料庫數據重復 發布:2024-11-15 14:23:17 瀏覽:781
安卓端開發用什麼IDE 發布:2024-11-15 14:13:51 瀏覽:554
阿里雲查看訪問ip 發布:2024-11-15 14:08:58 瀏覽:544
隨機字元串php 發布:2024-11-15 14:03:46 瀏覽:122
怎樣用資料庫搭建伺服器 發布:2024-11-15 13:58:39 瀏覽:478
android編碼設置 發布:2024-11-15 13:50:02 瀏覽:907
androidstringchar 發布:2024-11-15 13:45:00 瀏覽:965
obs配置怎麼弄 發布:2024-11-15 13:43:30 瀏覽:868
特斯拉買哪個配置的 發布:2024-11-15 13:42:36 瀏覽:557