数据结构(数组)--冒泡与选择

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

#define SIZE 10

 

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

 

//选择 void select_order(int *table_num, int length) {   int i = 0,j = 0;   for(i=0; i<length; i++)   {    for(j=i+1; j<length; j++)    {     if(table_num[i] > table_num[j])     {      swap(&table_num[i], &table_num[j]);     }    }   } }

 

//冒泡 

void bubble_order(int *table_num, int length) {   int i = 0,j = 0;  for(i=0; i<length; i++)   {    for(j=0; j<length-i-1; j++)    {     if(table_num[j] > table_num[j+1])     {      swap(&table_num[j], &table_num[j+1]);     }    }   } }

 

//希尔

void xier_order(int *table_num, int length) {   int i =0, flag = 0;   int gap = length;   while(gap > 0)   {    gap = gap/2;

   //内部为冒泡排序    do    {     flag = 0;     for(i=0; i<length-gap; i++)     {      if(table_num[i] > table_num[i+gap])     {       swap(&table_num[i], &table_num[i+gap]);       flag = 1;      }     }    }while(flag);     } }

 

//输出

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));            //输入

  select_order(table_num, sizeof(table_num)/sizeof(int));           //选择排序

  bubble_order(table_num, sizeof(table_num)/sizeof(int));           //冒泡排序

xier_order(table_num, sizeof(table_num)/sizeof(int));            //希尔排序

  traverse_array(table_num, sizeof(table_num)/sizeof(int));         //遍历

 return 0; }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值