當前位置:首頁 » 編程語言 » 選擇排序c語言原理
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

選擇排序c語言原理

發布時間: 2022-02-21 18:08:17

『壹』 c語言關於選擇排序法的演算法問題

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

『貳』 求C語言中選擇排序法的原理…

每次從未排序的數字中選擇最小的,與未排序的第一個交換,直到剩一個為止例子:(3
5
4
1
2
)
選擇最小為1,與3交換1
(5
4
3
2)
從剩餘的選擇最小為2
,與5交換1
2
(4
3
5)
選擇最小為3
與4交換1
2
3
(4
5)選擇最小為4
,它就是未排序第一個,不交換1
2
3
4
(5)
只剩一個了,結束

『叄』 求 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語言選擇法排序

#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語言中的選擇排序實現的原理還有它實現流程是什麼

選擇排序有兩種:簡單選擇排序和堆排序。堆排序可以看嚴蔚敏的數據結構中的排序章節。
簡單選擇就是下面這樣的
for(int i=0;i<n;i++)
{
int t=i;
for(int j=i+1;j<n;j++)//這就是每次選出第i小的數
{
if(a[t]>a[j])t=j;
}
if(t!=i)
{
//交換a[t]與a[i]
}
}

『陸』 c語言選擇排序法

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

『柒』 c語言選擇排序法

輸出中的
for(i=0;i<10;i++)
應該改為
for(i=0;i<5;i++)
為了好看
printf("%d",a[i])
改為
printf("%d ",a[i])

『捌』 c語言選擇排序是怎麼實現的 思路是什麼

在要排序的一組數中,選出最小(或者最大)的一個數與第1個位置的數交換;然後在剩下的數當中再找最小(或者最大)的與第2個位置的數交換,依次類推,直到第n-1個元素(倒數第二個數)和第n個元素(最後一個數)比較為止。

簡單選擇排序的示例:

『玖』 c語言數組排序中的選擇法是什麼意思啊

選擇排序(Selection sort)是一種簡單直觀的排序演算法。它的工作原理是每一次從待排序的數據元素中 選出 最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的數據元素排完。所以這種排序的方法叫選擇法排序。

C語言參考實例:

#include<stdio.h>
voidmain()
{
inta[]={1,3,4,2,0};
inti,j,n=5;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)//每一遍都與當前a[i]比較
if(a[i]<a[j])//大的前移
{
intt=a[i];
a[i]=a[j];
a[j]=t;
}

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