#include <stdio.h>/*
题目:天勤40页(5)
将顺序表L中所有小于表头元素的元素放在表的前半部分,大于表头元素的元素放在后半部分
顺序表中没有相同元素
(这是快速排序的partition部分)算法:
基于两个下标变量,一个对顺序表进行从前往后的遍历,一个对顺序表进行从后往前的遍历,
并在适当是时机进行值交换
*/#define maxlen 50
#define DATATYPE inttypedef struct{DATATYPE arr[maxlen];int length;
}Seqlist;void print_SQ(Seqlist list)
{for(int i=0;i<list.length;i++){printf("%d ",list.arr[i]);}printf("\n");
}int main(void)
{Seqlist list = {{6,3,6,6,1,1,10},7};int i=0,j=list.length-1;//pivot存放枢纽值int pivot = list.arr[0];while(i < j){//j从后往前遍历顺序表,i从前往后遍历顺序表(i与j交替遍历)//因为枢纽是表的第一个元素,所以先用j从后往前遍历顺序表while(i<j && list.arr[j]>pivot){--j;}//i<j是基于值交换的重要前提,时刻保证此条件的满足性if(i<j){//list.arr[j]<pivot,把它赋值给list.arr[i]list.arr[i] = list.arr[j];++i;}//再用i从前往后遍历顺序表while(i<j && list.arr[i]<pivot){++i;}if(i<j){//list.arr[i]>pivot,把它赋值给list.arr[j]list.arr[j] = list.arr[i];--j;}}//此时i==j,把枢纽赋进list.arr[i],也即list.arr[j]list.arr[i] = pivot;print_SQ(list);
}

对一个顺序表以首元素为pivot进行partion操作相关推荐

  1. 在顺序表中第五个位置插入一个元素9,实现顺序表插入的基本操作,输出顺序表中所有元素

    题目 在顺序表中第五个位置插入一个元素9,实现顺序表插入的基本操作,输出顺序表中所有元素 #include<iostream>using namespace std; #define OK ...

  2. 顺序表的操作例题——已知一个顺序表L, 其中的元素递增有序排列,设计一个算法,插入一个元素x (x为int 后保持该顺序表仍然递增有序排列(假设插入操作总能成功)。

    一.[题目描述]: 已知一个顺序表L, 其中的元素递增有序排列,设计一个算法,插入一个元素x (x为int 后保持该顺序表仍然递增有序排列(假设插入操作总能成功). 二.[题目分析]: 由题干可知,解 ...

  3. 考研数据结构之线性表(1.7)——练习题之A和B两个顺序表中相同元素组成一个新的从大到小的有序顺序表C的算法(C表示)

    题目 设A和B是两个顺序表,其元素按递增的顺序排列.编写一个将A和B中相同元素组成一个新的从大到小的有序顺序表C的算法. 分析 在归并算法的基础上稍加改动,只需要将当前扫描到的相等元素归入C表即可. ...

  4. 有一个顺序表L,其元素为整形数据,设计一个算法,将L中的所有小于表头元素的整数放在前半部分,大于表头元素的整数放在后半部分

    题目 有一个顺序表L,其元素为整形数据,设计一个算法,将L中的所有小于表头元素的整数放在前半部分,大于表头元素的整数放在后半部分 解答(天勤) /*************************** ...

  5. java设计一个顺序表类的成员函数,用java编写一个逐个输出顺序表中所有数据元素的成员函数...

    import java.util.ArrayList; import java.util.List; public class Test { /** * @param args */ public s ...

  6. 顺序表-删除所有元素值为x结点(另建表存放+复制到原表)

    顺序表的存储结构: typedef struct{int data[Maxsize]; //存在顺序表中的元素int length; //存放顺序表的长度}SqList; 分析: 这里要删除顺序表的所 ...

  7. 顺序表-删除所有元素值为x结点(遍历.新建顺序表(共享原空间))

    顺序表的存储结构: typedef struct{int data[Maxsize]; //存在顺序表中的元素int length; //存放顺序表的长度}SqList; 分析: 这里要删除顺序表的所 ...

  8. java设计一个顺序表类的成员函数_顺序表代码讲解以及实现

    用C语言编写一个有关顺序表的程序代码 创建一个顺序表,其数据元素类型为整型: 在该顺序表中插入数据(#include #include #define MaxSize 50 typedef char ...

  9. C语言实现了一个顺序表(附完整源码)

    C语言实现了一个顺序表 顺序表 顺序表的概念 顺序表的存储结构 C语言实现了顺序表完整源码 顺序表 顺序表的概念 顺序表是线性表的顺序存储结构,加按顺序存储方式构造的线性表的存储结构. 说明:对于n个 ...

最新文章

  1. 17 Java面试之css
  2. BH60绝对位置编码器测试
  3. 人工智能实践:TensorFlow笔记学习(五)—— 全连接网络基础
  4. Java中的接口命名[关闭]
  5. 几种作图软件使用感言
  6. 【洛谷P4124】[CQOI2016]手机号码
  7. 记录下Lambda常用的表现形式
  8. Docker精华问答 | Consul是什么?
  9. Javascript 仿Flash 图片切换 及 Flash 图片切换
  10. 如何单独编译Linux源代码中的驱动模块,比如NVMe驱动?
  11. python数字雨_用Python实现黑客帝国代码雨效果(3种方式)
  12. 坐标拾取器App上线
  13. phpnow安装教程
  14. COMPILATION ERROR
  15. 传智播客成都中心官网全新改版
  16. 爪哇国新游记之十七----肺腑之言
  17. 计算机网络wifi是什么意思,Mifi是什么,和wifi有什么区别?
  18. 中风(脑卒中)研究意义和背景
  19. Arrays类——Arrays.asList()方法使用
  20. 2016计算机考研大纲视频,2016计算机考研大纲介绍:

热门文章

  1. keras多层感知机+titanic数据集
  2. 没有可用软件包 xxx
  3. COMSOL软件的函数手册、函数解释手册等资料
  4. Altium Designer 18 速成实战 第五部分 PCB流程化设计常用操作(三十)Cutout的放置
  5. 2021年起重机械指挥考试内容及起重机械指挥模拟考试
  6. WPF中使用Windows.Controls.Ribbon创建一个简单画板
  7. TCP/IP协议学习笔记(二)
  8. 国际大专辩论赛比赛规则
  9. Robotics system toolbox 工具箱使用案例
  10. 好名远扬 - 尝试让大数据量与大运算量程序运行在手机上