【算法】排序——选择排序
迪丽瓦拉
2024-04-16 21:37:20
0

简单选择排序

(1)简单选择排序的基本思想来自人们对排序过程最直接的认识:不断从待排序序列中挑选出关键字最小的元素,依次放在已排序子序列的最后,直到待排序序列中所有元素都被选完,从而得到一个有序的序列。选择排序算法的设计同样可以借助蛮力法进行。 

(2)设待排序线性表为L,选择排序过程共需执行N-1遍操作,具体步骤如下:

① 在第i次挑选中(1<=i<=N-1)重复下述过程:让元素L[i]依次与元素L[i+1],L[i+2],……L[N]比较,如果L[i].key>L[j].key(i<=j<=N),就交换元素L[i]与L[j]在线性表中的位置。

② i=i+1,重复步骤①

(3)简单选择排序的算法

void SelectSort(int list[],int n){
    int i,j,k,temp;
    for(i=1;i<=n-1;++i){
        k=i;
        for(j=i+1;j<=n;j++){
            if(list[j]             k=j;
        }
        if(i!=k){
            temp=list[i];
            list[i]=list[k];
            list[k]=temp;
        }
    }

(4)完整程序

#include
#define N 20
int list[N+1];
void insertSort(int list[],int n){
    int i,j;
    for(i=2;i<=n;i++){
        list[0]=list[i];
        j=i-1;
        while(j>0&&list[0]
            list[j+1]=list[j];
            j--;
        }
        list[j+1]=list[0];
    }
}
void bubbleSort(int list[],int n){
    int i=1,j,t,flag=1;
    for(i=1;i
        flag=0;
        for(j=1;j<=n-1;j++){
            if(list[j]>list[j+1]){
                t=list[j];
                list[j]=list[j+1];
                list[j+1]=t;
                flag=1;
            }
        }
    }
}
void SelectSort(int list[],int n){
    int i,j,k,temp;
    for(i=1;i<=n-1;++i){
        k=i;
        for(j=i+1;j<=n;j++){
            if(list[j]             k=j;
        }
        if(i!=k){
            temp=list[i];
            list[i]=list[k];
            list[k]=temp;
        }
    }

int main(){
    int i,n;
    scanf("%d",&n);
    for(i=1;i<=n;i++){
        scanf("%d",&list[i]);
    }
    //insertSort(list,n);
    //bubbleSort(list,n);
    SelectSort(list,n);
    for(i=1;i<=n;i++){
        printf("%d ",list[i]);
    } 
    return 0;

 

上一篇:HTTP 速查手册

下一篇:面试整理一

相关内容