⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pai xu wen ti.txt

📁 几种基本的排序算法 ,希望对某些人有点帮助
💻 TXT
字号:
1.直接插入法:
main( )
{ int a[20]; int i,n,length;
  i=1;
  length=0;
  printf("输入待排序的元素:");
  scanf("%d",&n);
  while(n!=0)
  {a[i]=n;
   i++;
   scanf("%d",&n);
   length++;}
  printf("直接插入法排序:");
  InsertSort(a,length);
}
InsertSort(int a[],int length)
{ int i,j;
  for(i=2;i<=length;i++)
   { j=i-1;
     a[0]=a[i];            /*设置监视哨*/
     while(a[0]<a[j])      /*查找a[i]的插入位置*/
     { a[j+1]=a[j];
       j--;
     }
     a[j+1]=a[0];}
  for(i=1;i<=length;i++)
    printf("%d ",a[i]);
}
2.快速排序法:
main()
{ int a[20]; int i,n,length;
  i=1;
  length=0;
  printf("输入待排序的元素(以!结束):");
  scanf("%d",&n);
  while(n!=0)
   {a[i]=n;
    i++;
    scanf("%d",&n);
    length++;}
  printf("快速排序法排序:");
  QuickSort(a,1,length);
  for(i=1;i<=length;i++)
  printf("%d ",a[i]);
}
QuickSort(int a[],int l,int h)    
{ int k,i;
  if(l<h)
   { k=QuickOnePass(a,l,h);   /*将序列划分成两部分*/
     QuickSort(a,l,k-1);      /*对左子部分进行快速排序*/
     QuickSort(a,k+1,h);}     /*对右子部分进行快速排序*/
}
QuickOnePass(int a[],int low,int hight)  /*一趟快速排序*/
{ int i,j;
  i=low; j=hight;
  a[0]=a[i];
  while(i<j)
  { while((i<j)&&(a[j]>=a[0]))    /*自当前j指针所指位置起向前进行逐个比较*/
      j--;
    if(i<j)
     { a[i]=a[j];
       i++; }
    while((i<j)&&(a[i]<=a[0]))    /*自当前i指针所指位置起向前进行逐个比较*/

      i++;
    if(i<j)
     { a[j]=a[i];
       j--; }
  }
  a[i]=a[0];
  return(i);
}
3.冒泡排序法:
main()
{ int a[20]; int i,n,length;
  i=1;
  length=0;
  printf("输入待排序的元素:");
  scanf("%d",&n);
  while(n!=0)
  {a[i]=n;
   i++;
   scanf("%d",&n);
   length++;}
  printf("\n冒泡排序法排序:");
  BubbleSort(a,length);
}
BubbleSort(int a[],int length)
{ int i,j,flag=1;
  for(i=1;(i<length)&&(flag==1);i++)
   { flag=0;
     for(j=1;j<=length-i;j++)
      if(a[j]>a[j+1])
      {flag=1;
       a[0]=a[j];
       a[j]=a[j+1];
       a[j+1]=a[0];
      }
   }
for(i=1;i<=length;i++)
    printf("%d ",a[i]);
}  	
4.选择排序法:
main()
{ int a[20]; int i,n,length;
  i=1;
  length=0;
  printf("输入待排序的元素:");
  scanf("%d",&n);
  while(n!=0)
  {a[i]=n;
   i++;
   scanf("%d",&n);
   length++;}
  printf("\n选择排序法排序:");
  SelectSort(a,length);
}
SelectSort(int a[],int length)
{ int i,j,k;
  for(i=1;i<length;i++)
   { k=i;
     for(j=i+1;j<=length;j++)
       if(a[j]<a[k])
          k=j;
     if(k!=i)
     { a[0]=a[k];             /*a[0]是中间变量*/
       a[k]=a[i];
       a[i]=a[0];}
     }
  for(i=1;i<=length;i++)
    printf("%d ",a[i]);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -