学渣理解的选择排序算法

        排序是算法学习中比较大,也是比较基础的一块,我就拿我个人体验边学边讲一下我对排序算法的理解。

常用的排序算法有:a,选择排序  b,冒泡排序   c,合并排序  d,快速排序  e,插入排序


首先说一下选择排序:

1、基本思想:第i趟排序在无序序列中r(i)~r(n)中找到值最小的记录,并和第i个记录交换作为有序序列的第i个记录。

这是书上的解释,通俗的说就是,高中时候老师让站队,说:"来来都站成一列(无序区),然后说谁个子最矮,站出来站到前边跟第一排这换一下(这个前边就是有序区了),"

然后不断重复,直到无序区只剩下最后一个值为止。


第三次:有序区为c和b然后无序区a为最低的又是位置不变

第四次:有序区为c、b、a、无序区最低的为e,e和d交换位置。此时无序区只剩d了,于是排序完成。

好了程序员的耿直上代码:

#include <stdio.h>  
#include <string.h>
void SelectSort(int r[],int n){
      int i,j,index,temp;
      for(i=0;i<n-1;i++){
       index=i;
       for(j=i+1;j<n;j++)
        if(r[j]<r[index]) index=j;                                 
          if(index!=i){
           temp=r[i]; r[i]=r[index]; r[index]=temp;           }               
     }
}
main(){
       int r[100],j=0,n;
       while(scanf("%d",&n)){
           for(int i=0;i<n;i++)
          scanf("%d",&r[i]);          
       SelectSort(r,n);
       for(int i=0;i<n;i++)
       printf("%d",r[i]);
       getchar();  
}}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值