『壹』 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]);
}