zoukankan      html  css  js  c++  java
  • 排序算法01_选择排序

     1、普通选择排序

     1 //选择排序
     2 #include<stdio.h>
     3 int main(){
     4     int a[10]={45,2,9,0,-3,54,12,5,66,33};
     5     int i,j,t;
     6     //先将n个数中最小的数与a[0]对换;再将a[1]~a[n-1]中最小的数与a[1]对换,每比较一轮,找出一个未经排序的数中最小的一个
     7     //总共有n个数,分别用前面n-1个数与后面未排序的数列进行比较,所以总共循环n-1次
     8     for(i=0;i<9;i++){
     9         //用i+1后面的数a[j]分别与a[i]进行比较,比较过程从i+1=1开始,至n结束,在下面的循环过程中a[i]始终不变
    10         for(j=i+1;j<10;j++){
    11             //如果后面的某个数a[j]小于前面的a[i],则进行交换
    12             if(a[j]<a[i]){
    13                 t=a[j];a[j]=a[i];a[i]=t;
    14             }
    15         }
    16     }
    17     for(i=0;i<10;i++){
    18         printf("%4d",a[i]);
    19     }
    20 }

     2、指针实现的选择排序

     1 //用指针来实现选择排序
     2 #include<stdio.h>
     3 int main(){
     4     void sort(int *x,int n);
     5     int a[10]={2,4,9,5,8,1,0,3,7,6};
     6     int *pa=a;
     7     int n=10;
     8     sort(pa,n);
     9     //用指针输出数组时一定要先执行"pa=a",此程序中不执行此句也可以正确输出,在有的程序中执行到此句时指针pa已经指向了其他位置,需要对指针复位
    10     //此句中的循环条件表达式不能使用"pa<pa+10"来判断,这是因为步长表达式执行"pa++"操作,每一次执行完步长表达式之后再执行循环条件表达式时pa的值都会改变,"pa<pa+10"将一直满足条件,无法跳出循环,这一点一定要注意,千万要小心使用
    11     for(pa=a;pa<a+10;pa++)
    12         printf("%d  ",*pa);    
    13 }
    14 void sort(int *x,int n){
    15     int temp;
    16     //定义三个指针变量pi,pj,pn
    17     //pi控制外层循环,变化范围从数组第1个元素到第n-1个元素对应的地址
    18     //pj控制内层循环,变化范围从每一次内循环时pi对应的下一个元素到第n个元素对应的地址
    19     //pn指向数组最后一个元素
    20     int *pi,*pj,*pn;
    21     pi=x;
    22     pn=x+n;
    23     for(pi;pi<pn-1;pi++){
    24         for(pj=pi+1;pj<pn;pj++){
    25             if(*pi>*pj){
    26                 temp=*pi;*pi=*pj;*pj=temp;
    27             }
    28         }
    29     }
    30 }
  • 相关阅读:
    SourceTree 跳过登陆
    input type="file"获取文件名方法
    Chrome浏览器安装vue-devtools插件
    设置文本超出既定宽度隐藏,并显示省略号
    node安装express时找不到pakage.json文件;判断安装成功?
    NoSQL:redis缓存数据库
    NoSQL:Linux操作memcached
    Python:迭代器
    Python函数篇:装饰器
    Python面向对象篇之元类,附Django Model核心原理
  • 原文地址:https://www.cnblogs.com/zytomcat/p/9309905.html
Copyright © 2011-2022 走看看