本文目錄一覽:
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語言選擇法
// 我把你的程序修改了下,添加了些注釋,你應該會看明白滴
// sort(int *, int)函數是由大到小的排序方法。採用的算法
// 是第一次從x[0]…x[4]中選出個最大的數,然後記錄下它的索引,
// 如果第一個數不是最大的,就把第一個數和最大數進行交換,使得
// x[0]是五個書中的最大數,第二次就從x[1]…x[4]中選一個最大的
// 然後把它放在x[1]的位置上。5個數,其實只需要四次就可以排好序滴
void sort(int *x,int n)
{
// i,j都是循環變量temp是用於交換的臨時變量,max是用於記錄每一趟循環
// 中找到的最大值的下標。我這裡的temp對應你原理的t,max對應你原來的k
int i, j, temp, max;
// 1.外層的for循環用於控制查找的趟數,n個數排序,只需要n-1趟排序就可以滴
// 2.你原來是 i=n-1其實可以改為in-1.可以少一趟滴。
// 3.比如 1 2 3 這三個數排序,你可以先 假設第一個數即1是最大的,然後讓1與第二個
// 4.數進行比較即1與2比較1 2你記下2對應的下標,再讓2與第三個數比較2 3再記下
// 5. 3的下標所以3是最大的數字把3放到1的位置,把1放到3的位置,即交換位置。
// 6.經過一次排序後變為3 1 2 第二次再排1 與2先假設1是1與2中最大的12記下2的下標
// 7.交換1,2位置變為2 1 所以3個數進過兩趟排序後已經變為有序了即3 2 1
// N個數只需N-1趟循環便可有序,外層循環用於控制循環趟數
for(i=0; in-1; i++)
{
// 先假設下標為i的數字是最大值
max = i;
// 也是用於控制循環次數,在第i趟中找出最大數的下標
// 第一次是從x[0]..x[4]這5個數中找,第二次是從
// x[1]..x[4]4個數中找這4個數的最大值…第四次從x[3]與x[4]這兩個數
// 中找最大值
for(j=i+1; jn; j++)
{
// 用於找最大值的下標
if(x[j] x[max])
max = j;
}
// 看第i趟循環中看x[i]是不是最大值如果是就不需要交換了
// 你也可以改為 if (x[i] x[max]){交換兩個數}
if(i!=max)
{
temp = x[i];
x[i] = x[max];
x[max] = temp;
}
}
}
c語言編程 程序怎麼實現選擇菜單 比如說按1 執行其中一部分 按2執行另一部分
switch(value){
case 1:
{
代碼
}
break;
case 2:
{
代碼
}
break;
default :
{
代碼
}
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/247952.html