2-24-c-algorithm

帖一些C语言的代码吧,一些基础的,较为简单的代码,没事的时候可以复习一下, 一直说这学期还是刷JudgeOnline 还是没做到啊,等节奏定下来就开始,一共三千多道题,真心爽。。。

还是先搞点简单的吧。

快排,核心思想就是每次找到一个元素的合适位置,同时保证前面的元素都小于他,后面的元素都大于他。

#include <stdio.h>


int findSeat(int l[],int low,int high)
{
    int prvotkey=l[low];
    int temp;
    temp=l[low];
    while (low<high)
    {
        while (low<high&&l[high]>=prvotkey)
            --high;
        l[low]=l[high];
        while (low<high&&l[low]<=prvotkey)
            ++low;
        l[high]=l[low];
    }
    l[low]=temp;
    return low;
}
void qsort(int l[],int low,int high)
{
    int prvotloc;
    if(low<high)
    {
        prvotloc=findSeat(l,low,high);    //将第一次排序的结果作为枢轴
        qsort(l,low,prvotloc-1); //递归调用排序 由low 到prvotloc-1
        qsort(l,prvotloc+1,high); //递归调用排序 由 prvotloc+1到 high
    }
}

void quicksort(int l[],int n)
{
    qsort(l,1,n); //第一个作为枢轴 ,从第一个排到第n个
}
void main()
{
  int a[200],n,i;
  printf("n=");
  scanf("%d",&n);
  for (i=1;i<=n;i++)
    scanf("%d",&a[i]);
  quicksort(a,n);
  printf("right number:");
  for(i=1;i<=n;i++)
    printf("%d ",a[i]);
  printf("\n");
}

排序大概就一个快排吧,冒泡、选择就算了。接下来是些字符串处理的吧。