[转载]C语言中的基本排序算法
文章作者:苏-371.冒泡法:
原理:通过每次比较把相对大或小的数沉底,相对小或大的数上升.
比如你要按从小到大的顺序排序,你要用到两个循环.我们假设把数存在一个数组里,数组的长度为size.第一个循环是要从1开始循环size-1次,第二次循环从0开始,循环size-i次(i 为第一个循环的循环变量).程序如下(从小到大排序):
[code] 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;
}
}
}[/code]经测试能正确运行
2.选择法:
就是固定一个数,让它与数组中在它之后的数进行比较.
[code] 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;
}
}
}[/code]
为了大家测试方便,我写了个类,用哪个排序法就把它前面的注释线去掉,比如要用选择法,就把5,6行的横线去掉就行了.
[code]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;//返回排好的数组
}
}[/code] 不错!以后望多转载一些算法方面的东东,要是有总结所有算法的例子哪就更好!学习了C语言有掌握的算法会有更多急于学习它的来这里!
页:
[1]