排序

来源:互联网 发布:总结 优化机构设置 编辑:程序博客网 时间:2024/06/06 01:09

将一串数字从小到大排序:

 

冒泡排序:

C语言程序如下:

 

#include <stdio.h>
/*冒泡排序*/
int main()
{
 int a[10] = {0};
 int i = 0;
 int j = 0;
 int temp = 0;

 /*1、从终端里面获取是个数字保存到数组a中*/
 printf("Please input ten num:\n");

 for( i = 0; i < 10; i++)
 {
  scanf("%d",&a[i]);
 }
 /*确保从终端输入的十个数据能够正确地保存在数组a中*/
 // for( i = 0; i < 10; i++)
 // {
 //  printf("%d\t",a[i]);
 // }

 /*2、对数组a中的数据进行降序排序*/
 for(i = 1; i <= 9; i++)    //i的值就代表第i轮排序;
 {
  /*进入每一轮的排序,从a[0]和a[1]开始比较*/
  for(j = 0; j < (10 - i); j++) //对于第一轮:a[8]和a[9]进行比较;
  {        //对于第二轮:a[7]和a[8]进行比较;
   if(a[j] < a[j + 1])   //i = 1; a[8]和a[9]===>j = 8 j + 1 = 9   j < 9;和i有关;10 - i
   {       //i = 2; a[7]和a[8]===>j = 7 j + 1 = 8   j < 8;         10 - i
   /*两个数进行了交换*/
      temp = a[j];
      a[j] = a[j + 1];
      a[j + 1] = temp;
   }
  }
 }   
  /*经过排序之后的打印*/
  for( i = 0; i < 10; i++)
  {
   printf("%d\t",a[i]);
  }
 return 0;
}

 

 

 

选择排序:

 

C语言程序如下:


#include <stdio.h>

int main()
{
 int i,j;
 int t=0;
 int a[10] = {0};

 printf("input ten numbers:");
 for(i = 0;i < 10;i++)
 {
  scanf("%d",&a[i]);
 }

 for(i = 0;i < 10;i++)
 {
  for(j = i;j < 10;j++)
  {
   if(a[i] > a[j])
   {
    t = a[i];
    a[i] = a[j];
    a[j] = t;
   }
  }
 }
 for(i = 0;i < 10;i++)
 {
  printf("%d\t",a[i]);
 }
 return 0;
}

 

 

插入排序:

C语言程序如下:

 

#include <stdio.h>

int main()
{
 int i = 0;
 int j = 0;
 int a[10] = {0};
 int temp;
 printf("input ten numbers:\n");
 for (;i < 10;i++)
 {
  scanf("%d",&a[i]);
 }
 for(i = 1;i < 10;i++)
 {
  for(j = i;j > 0;j--)
  {
   if(a[j] < a[j - 1])
   {
    temp = a[j];
    a[j] = a[j - 1];
    a[j - 1] = temp;
   }
   else
   {
    break;
   }
  }
 }
 for(i = 0;i < 10;i++)
 {
  printf("%d",a[i]);
 }
 return 0;
}

 

三种排序方法大致上写法只有细微的差别,但是具体的含义有很大的差别。