二元選擇法排序

2021-07-27 08:21:01 字數 1227 閱讀 8627

題目描述

注:本題只需要提交標記為修改部分之間的**。

c++語言方式。

二元選擇排序:對傳統的選擇排序演算法改進,在一趟比較過程中,同時記錄最大值和最小值位置,將最小值與第乙個元素交換,最大值與最後乙個元素交換,即一趟比較確定兩個元素,對剩下的序列重複上述過程,直至序列為空。

c語言方式。

#include

int main()

int a[100],i,n;

int j , minpos ,maxpos, tmp;

scanf("%d",&n);

for(i=0; iscanf("%d",&a[i]);

for (i=0 ; i minpos = i;

maxpos = i ;

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

if (a[j] > a[maxpos])

maxpos = j ;

continue ;

if (a[j]< a[minpos])

minpos = j ;

/*****修改的起始行******/

tmp = a[i];

a[i] = a[minpos];

a[minpos] = tmp;

tmp = a[n-i];

a[n-i] = a[maxpos];

a[maxpos] = tmp;

/*****修改的終止行*****/ 

for(i = 0; iprintf("%d ",a[i]);

printf("\n");

return 0;

輸入n和n個整數

輸出從小到大排序後的數列

樣例輸入

8 12 35 69 84 52 54 75 65

樣例輸出

12 35 52 54 65 69 75 84

答案:tmp = a[i];//此時的最小值已經賦值給了a[i],也就是說此時的第乙個數應為存放的是最小值, 

a[i] = a[minpos]; 

a[minpos] = tmp; 

if(maxpos==i)//存在一種情況就是若第乙個數是最大的數的話,那麼程式後面就有少考慮的情況,所以要設定乙個第乙個數與找出的數的下標進行比較的處理(此時的處理原理就是若最大的數的下標就是你本應該存放最小數的下標,那就要交換) 

else//還有還有就是如果不符合之前的比較的話,那麼就是直接把最大的放到最後的位置 

二元選擇排序法

檔名稱 test.cpp 作 者 劉佳琦 完成日期 2014年 12 月 6日 版 本 號 v1.0 問題描述 雙向排序法 輸入描述 一串數 程式輸出 排序好的數 includeusing namespace std int main if a j a minpos minpos j tmp a i...

python選擇排序二元選擇 二元選擇排序

注 本題只需要提交標記為修改部分之間的 c 語言方式。二元選擇排序 對傳統的選擇排序演算法改進,在一趟比較過程中,同時記錄最大值和最小值位置,將最小值與第乙個元素交換,最大值與最後乙個元素交換,即一趟比較確定兩個元素,對剩下的序列重複上述過程,直至序列為空。include using namespa...

二元選擇排序

description 注 本題只需要提交標記為修改部分之間的 c 語言方式。二元選擇排序 對傳統的選擇排序演算法改進,在一趟比較過程中,同時記錄最大值和最小值位置,將最小值與第乙個元素交換,最大值與最後乙個元素交換,即一趟比較確定兩個元素,對剩下的序列重複上述過程,直至序列為空。include u...