数据结构(C数据)--快速排序

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define SIZE 7

void swap(int *pa, int *pb)
{
    int temp = 0;
   temp = *pb;
   *pb = *pa;
   *pa = temp;
}

//快速排序的经典算法
int findpos(int *table_num, int length)
{
   int low = 0;
   int high = length-1;
   int temp = table_num[0];
   while(low < high)
   { 
         while(low<high && temp<table_num[high]) high--;
         swap(&table_num[low], &table_num[high]); 

          while(low<high && temp>table_num[low]) low++;
         swap(&table_num[low], &table_num[high]);   
 }

  table_num[low] = temp;
 
  return low;
}

//递归实现
void speed_order(int *table_num, int length)
{
      int pos = 0;
       int low = 0, high = length-1;
      if(low<high)
      {
          pos = findpos(table_num, length);
          speed_order(table_num, pos+1);
           speed_order(table_num+pos+1, length-pos-1);
      }

}

//输出
void traverse_array(int *table_num, int length)
{
       int i = 0;
        for(i=0; i<length; i++)
       {
              printf("Input %d: %d\n", i, table_num[i]);
       } 
}

//输入
void input_array(int *table_num, int length)
{
      int i = 0;
      memset(table_num, 0, length);
      for(i=0; i<length; i++)
      {
          printf("Input %d: \n", i);
         scanf("%d", &table_num[i]);
      }
}

 

int main()
{
       int table_num[SIZE];
       memset(table_num, 0, sizeof(table_num)/sizeof(int));

       input_array(table_num, sizeof(table_num)/sizeof(int));            //输入
      speed_order(table_num, sizeof(table_num)/sizeof(int));         //快速排序
       traverse_array(table_num, sizeof(table_num)/sizeof(int));         //遍历

      return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值