现在的位置: 首页 > 综合 > 正文

排序方法总结(1)冒泡排序 选择排序

2014年11月02日 ⁄ 综合 ⁄ 共 1553字 ⁄ 字号 评论关闭

排序方法是一种基本的、重要的算法,排序的方法有很多,现把一些基本排序方法的算法和c代码列出如下,供大家思考,借鉴,进步。

在进行排序之前首先要做的一件事就是选择排序的准则,即(1)从大到下排列或(2)从小到大排列,在进行排序时就是基于这种准则,这样做的目的是为了避免思路的混乱,清晰的思路是解决问题的第一准则。在选择好排序的准则之后就可以进行排序了。

冒泡排序

冒泡排序的算法是这样的

(1) 数组里的每一个数都要和它以后的数进行比较,若不符合排序的准则这两个数就需要交换,这是在内层循环里做的,这个数在进行比较之后就不需要再次比较了。

(2) 在外层循环里要做的事是控制循环的次数,即需要比较几次,若有n个数,则需要比较n-1

#include<stdio.h>

int main()

{

 int a[10];

 int i,j,t;

 printf("请输入10个数,每个数之间用空格隔开\n");

 for(i=0;i<9;i++)

 scanf("%d",&a[i]);

 printf("未排序前的数组为\n");

 for(i=0;i<10;i++)

printf("%d\t",a[i]);  

 for(i=0;i<9;i++)

 {

  for(j=0;j<9-i;j++)

  {

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

    {

     t=a[j];

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

     a[j+1]=t;                           

    }                                  

  }                           

 } 

 printf("按从小到大顺序排序后的数组为\n");  

for(i=0;i<10;i++)

printf("%d\t",a[i]);    

getch();

return 0; 

冒泡排序是一种效率较低的排序方法,排序所用时间与表长的平方成正比。如果需要排序的表比较长,冒泡排序所花费的时间就很客观。

   

}

选择排序

选择排序的算法是这样的:

(1)外层循环设置的a[i]为比较的基准值,内层循环a[j]为设置的比较基准值,比较基准值从a[i]以后的之开始,一直到数组的末尾

(2)每次a[i]a[j]比较时,如果不满足排序的条件,则a[i]a[j]进行交换,满足排序的条件,则a[i]a[j]不进行交换,所以这样做之后,每次是a[i]a[j],每次比较之后a[i]与它前一个数相比,总是按照一定的顺序排好的。下面是选择排序的c代码!

#include<stdio.h>

int main()

{

  int a[10]={9,6,3,8,5,2,7,4,1,0};//定义长度为10的数组,并初始化a[0]~a[8],a[9]自动赋0, 

  int i,j,t;

  printf("原数组为:\n");

  for(i=0;i<10;i++)

  printf("%d\t",a[i]);

  for(i=0;i<9;i++)

  {

   for(j=i+1;j<10;j++)

   {

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

     {

       t=a[i];

       a[i]=a[j];

       a[j] =t;         

     }                    

   }               

  }  

 printf("排序后数组为:\n");

 for(i=0;i<10;i++) 

 printf("%d\t",a[i]);

 getch();   

 return 0;    

}

选择排序和冒泡排序相比较,选择排序在进行排序时所交换的次数较少,用时较少,效率比较高。是一种快捷的方法。

抱歉!评论已关闭.