发新话题
打印

[转载]C语言中的基本排序算法

[转载]C语言中的基本排序算法

  文章作者:苏-37

1.冒泡法:
    原理:通过每次比较把相对大或小的数沉底,相对小或大的数上升.
    比如你要按从小到大的顺序排序,你要用到两个循环.我们假设把数存在一个数组里,数组的长度为size.第一个循环是要从1开始循环size-1次,第二次循环从0开始,循环size-i次(i 为第一个循环的循环变量).程序如下(从小到大排序):
复制内容到剪贴板
代码:
    for(int i=1;i<=size-1;i++){
        for(int j=0;j<size-i;j++){
            if (a[j]>a[j+1]){
                 int temp;
                 temp=a[j];
                 a[j]=a[j+1];
                 a[j+1]=temp;
            }
        }
     }
经测试能正确运行

2.选择法:
就是固定一个数,让它与数组中在它之后的数进行比较.
复制内容到剪贴板
代码:
  for(int i=0;i<a.length;i++){
    for(int j=i+1;j<a.length;j++){
      if (a[i]>a[j]){
       int temp;
       temp=a[i];
       a[i]=a[j];
       a[j]=temp;
      }
    }
   }
为了大家测试方便,我写了个类,用哪个排序法就把它前面的注释线去掉,比如要用选择法,就把5,6行的横线去掉就行了.
复制内容到剪贴板
代码:
public class Sort {
  public static void main(String[] args) {
   int []a={12,1,51,15,67,78,100,54,45};//待排序的数组
   //选择法排序
   //Xuanze sor=new Xuanze(a);
   //a=sor.sort();
   //冒泡法排序
   //Maopao mao=new Maopao(a);
   //a=mao.sort();
   for (int i=0;i<a.length;i++){
     System.out.println(a[i]+",");
    }
  }
}


//选择法排序的类
class Xuanze{
  int []a;
  public Xuanze(int []a){
   this.a=a;//接收待排序的数组
  }
  //排序
  public int[] sort(){
   for(int i=0;i<a.length;i++){
    for(int j=i+1;j<a.length;j++){
      if (a[i]>a[j]){
       int temp;
       temp=a[i];
       a[i]=a[j];
       a[j]=temp;
      }
    }
   }
   return a;//返回排好的数组
  }
}


//冒泡法排序的类
class Maopao{
  int []a;
  public Maopao(int []a){
   this.a=a;//接收待排序的数组
  }
  //排序
  public int[] sort(){
   int size=a.length;
   for(int i=1;i<=size-1;i++){
      for(int j=0;j<size-i;j++){
          if (a[j]>a[j+1]){
                int temp;
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
          }
      }
    }

   return a;//返回排好的数组
  }
}
qq310926是我唯一用号,除此之外有其他号码号自称邪八冰血封情,则非本人。

TOP

不错!以后望多转载一些算法方面的东东,要是有总结所有算法的例子哪就更好!学习了C语言有掌握的算法会有更多急于学习它的来这里!
技术追求永远是我们第一追求!

TOP

发新话题