❶ c語言中的選擇法是什麼意思在程序中用數組大小比較算選擇法嗎
選擇法是c中對數組進行排序的一種方法。
以整形數組元素為例,有數組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語言中 對一些數排列時 什麼是選擇法
所謂排序是,就是整理表中的記錄,使之按關鍵字遞增(或遞減)次序排列起來。常用的排序演算法有:冒泡法、選擇法、插入法、快速排序法、堆排序法、歸並排序法等。
選擇法:
#include <stdio.h>
#define N 10
main()
{
int a[N],i,j,temp;
printf("Input 10 numbers:\n");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(i=0;i<N-1;i++) {
for(j=i+1;j<=N-1;j++)
if(a[i]<a[j])
{ temp=a[i];
a[i]=a[j];
a[j]=temp;}
}
printf("The sorted numbers:\n");
for(i=0;i<N;i++)
printf("%d ",a[i]);
}
這個演算法可以進一步改進
for(i=0;i<N-1;i++){
k=i;
for(j=i+1;j<=N-1;j++)
if(a[j]>a[k]) k=j;
if(i!=k)
{ temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
改進後的選擇發排序,工作量明顯減少
❸ 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]);
}
❹ C語言中篩選法是怎麼一回事,請知道的詳細講一下
你真是大哥啊,篩選法是演算法,他不是C語言中獨有的,是一種解題思想
❺ C語言中冒泡排序法和選擇法的不同是什麼本質區別是什麼
是這樣的
區別主要在交換的方式上
每一輪都把最大或最小的元素篩選出來放在相應的位置上
這是相同的
但是
對於每一輪
比如第一輪
要把1~n 中最大的那個放到n這個位置
冒泡法每次比較和移動相鄰的兩項
而選擇排序每次交換當前項和第n項
我把代碼寫出來你就懂了:
冒泡:
for i:=1 to n-1 do
if (a[i]>a[i+1]) then swap(i,i+1);
選擇:
for i:=1 to n-1 do
if (a[i]>a[n]) then swap(i,n);
(swap 表示交換)
總的來說,兩種排序比較的次數是相同的
但交換的次數,選擇排序是更少的
雖然兩者的時間復雜度都是 O(n^2)
但通常,選擇排序更快一點
❻ 在C語言中什麼叫選擇法
當你只有一個選項的時候,使用if(條件表達式)
當你只有兩個選項的時候,使用if(條件表達式)else(條件表達式)
當你只有多個選項的時候,使用if(條件表達式)else if(條件表達式)...else(條件表達式)
例如你從1到100的數,選擇5的倍數列印出來,這時候就用選擇法了
for(i=1;i<=100;i++)
{if(i%5==0)printf("%d\n",i);}
❼ C語言中的選擇排序法是什麼
選擇排序(Selection sort)是一種簡單直觀的排序演算法。工作原理是每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的數據元素排完。
以下是一個實現選擇排序的例子:
#defineSWAP(x,y,t)((t)=(x),(x)=(y),(y)=(t))
//將list中的n個數據,通過選擇排序演算法排序。
voidselete_sort(intlist[],intn)
{
inti,j,min,temp;
for(i=0;i<n-1;i++){
min=i;
for(j=i+1;j<n;j++)//找出最小元素的下標。
if(list[j]<list[min])
min=j;
SWAP(list[i],list[min],temp);//交換最小元素到當前起始位置。
}
}