C语言中的三种排序方法

2025-11-06 03:47:47

1、交换排序:借鉴了求最大值,最小值的思想,按升序排列的基本过程为:先将第一个数分别与后面的数进行比较,若后面是的数小,则交换和第一个数的位置,否则不交换:这一轮结束之后,则求除了一个最小的放在第一个位置,然后进行第二轮比较,但这种交换效率低

package cho2;

public class changeSort {

public static void main(String[] args) {

// TODO 自动生成的方法存根

//对给定的数组进行排序

int[] a={53,54,56,51};

int i;

int j;

int temp=0;

//注意不要数组越界 如果i小于4或者j小于5都会有越界的

//现象

//注意交换中不能时时刻刻用i+1代替j;

for(i=0;i<3;i++){

for(j=i+1;j<4;j++){

if(a[i]>a[j]){

temp=a[i];

a[i]=a[j];

a[j]=temp;

}

}

}

for(i=0;i<4;i++){

System.out.println(a[i]);

}

}

}

2、冒泡排序:将相邻两个数进行交换,重复的过程,一般,如果有N个数进行排序,则需进行N-1起泡

package cho2;

public class maopao {

public static void main(String[] args) {

// TODO 自动生成的方法存根

int[] a={53,54,56,51};

int i;

int j;

int m=0;

int temp=0;

for(i=0;i<3;i++){

m=m-1;

//4+m主要为了减少运行的次数

for(j=0;j<4+m;j++){

if(a[j]>a[j+1]){

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

}

}

for(i=0;i<4;i++){

System.out.println(a[i]);

}

}

}

3、选择排序:在交换排序的基础上,找出余下的数中的最大值再与地I+1个数进行交换,这样每一轮比较中最多只有一次交换操作,这个算法最多只有N—1次交换操作

package cho2;

public class selectSort {

public static void main(String[] args) {

// TODO 自动生成的方法存根

int[] a={53,54,56,51};

int i;

int j;

int k;

int temp=0;

for(i=0;i<3;i++){

k=i;

for(j=i+1;j<4;j++){

if(a[i]>a[j]){

k=j;

}

}

if(k!=i){

temp=a[k];

a[k]=a[i];

a[i]=temp;

}

}

for(i=0;i<4;i++){

System.out.println(a[i]);

}

}

}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢