选择排序方法

泛微E9开发 明细表字段赋值到主表字段,将各类型合计赋值到主表类型合计中 ①绑定明细表类型、预计金额字段的值改变事件,每当有值发生改变,就需要重新计算供应商1、供应商2、供应商3的合计,如果不绑定这两个字段的话,会出现计算不及时或计算错误的问题。②当有明细行被删除时,也需要重新计算供应商1、供应商2、供应商3的合计,比如删除了供应商1的明细行,如果不重新计算,那么供应商1的值还是被删之前的值,合计错误。将各类型合计赋值到主表类型合计中。 阅读详情

程序设计的首要问题,应该是把大规模程序系统分解成许许多多自成体系且相对独立的组成部件,然后再为各部分之间存在的相互调用,定义严格的调用格式。编程绝对不是仅仅写程序代码!!!

/**************************************************START*********************************************************************/

#include<stdio.h>

#include<stdlib.h>

#define MAX_SIZE 101
#define SWAP(x,y,t) ((t)=(x),(x)=(y),(y)=(t))
#define COMPARE(x,y) (((x) < (y))? -1:((x) == (y))?0:1)

void sort(int list[],int n);
int binsearch(int list[], int searchnum,int left, int right);

/**************************************************************
*Function Name:main
*Description :Test function sort and binsearch.
*Input :NULL.
*Output :NULL.
*Return :NULL
***************************************************************/
void main(void)
{
int i,n,searchnum,wjj;
int list[MAX_SIZE];
printf("Enter the number of numbers to generate: ");
scanf_s("%d",&n);
//检查输入n是否合法。
if(n<1 || n > MAX_SIZE)
{
fprintf(stderr,"Improper value of n\n");
exit(EXIT_FAILURE);
}
//为数组赋随机值,所有元素的值都在1000范围以内。
for(i=0;i<n;i++)
{
list[i] = rand()%1000;
printf("%d ",list[i]);
}
//排序操作
sort(list,n);
//打印排序后的数组
printf("\n Sorted array:\n");
for(i=0;i<n;i++)
printf("%d ",list[i]);
printf("\nEnter the num you want to search:");
scanf("%d",&searchnum);
wjj = binsearch(list, searchnum,0, n-1);
if(wjj!=-1)
{
printf("searchnum success!\n");
printf("The num you want to search is list[%d]",wjj);
}
else
printf("The num %d you want to search is not in the list.",searchnum);

printf("\n");

}
/**************************************************************
*Function Name:sort
*Description :From those integers that are currently unsorted,
* find the smallest and place it next in the sorted list.
* 在当前所有未排序的整数中,找出最小的一个,把它放在当前有序表的最后一个位置。
*Input :list address and the lengtn of list.
*Output :sorted list.
*Return :NULL
***************************************************************/

void sort(int list[],int n)
{
int i,j,min,temp;
for(i=0;i<n-1;i++)
{
min = i;
for(j=i+1;j<n;j++)
if(list[j]<list[min])
min = j;
SWAP(list[i],list[min],temp);
}
}

/**************************************************************
*Function Name:binsearchnum
*Description :find searchnum in list
*Input :list address , the num that you want to search
* and the scope (left and right)
*Output :NULL
*Return :find the searchnum return 0,else return -1.
***************************************************************/
int binsearch(int list[], int searchnum,int left, int right)
{
int middle;
while(left <= right)
{
middle = (left + right)/2 ;
switch(COMPARE(list[middle],searchnum))
{
case -1 :left = middle + 1;break;
case 0 :return middle;
case 1 :right = middle - 1;
default:printf("Impossible Thing!");
}
}
return -1;

}


/************************************************END************************************************************************/


本例中使用了选择排序法和折半查找。

示例输入和所得到的结果。



按照自顶向下的设计思路,整个程序的大致流程是:

创建需要操作的数组——>为数组赋值——>选择排序法处理——>折半查找所需要的数值。

主程序的大致构成:

void main(void)

{

Creatlist(int list[], int n);

Assignlist(int list[], int n);

Sort(int list[], int n);

Searchnum(int list[], int n, int searchnum);

}

然后分别实现各个函数,功能简单的可直接在主函数中以简单语句实现。将实现同一功能的所有函数打包为函数。

在定义函数之前,最好先声明函数,好处是,编译程序在分析过程遇到一个函数调用,已经知道该函数的合法定义将出现在后续代码中。

要习惯将一个大程序分解为易于处理的多个部分,每个部分用一个或者多个函数实现,这也是函数机制的目标。分解之后,由各个函数组成的程序更加易读,同时,各个函数也可以分别测试,程序调试起来也更加模块化,这使得程序的排错更加简单。

GPS从入门到放弃(十七) --- 对流层延时 GPS从入门到放弃(十七) — 对流层延时 对流层概念 对流层(Troposphere)地球大气层靠近地面的一层。它同时是地球大气层里密度最高的一层,它蕴含了整个大气层约75%的质量,以及几乎所有的水蒸气及气溶胶。 对流层的下界与地面相接,上界高度随地理纬度和季节而变化,在低纬度地区平均高度为1718公里,在中纬度地区平均为1012公里,在高维度地区平均为8~9公里,并且夏季高于冬季。 卫星导航... 阅读详情

相关推荐

C语言 100道经典编程题适用于专升本,专接本【详细分析版】_c语言专升本题目

/法2//left指向起始 right指向数组末尾= 0){left++;//如果*left是奇数就循环接着向后指,直到指向偶数就退出//(left

2401_84978503的博客 695

选择排序(图解)

选择排序 选择排序是一种简单直观的排序算法,它的工作原理是每一次从待排序的数据元素中选出最小(最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法。 选择排序的方法主要有两种,分别是简单选择排序以及堆排序,它们都是从待排序的数据元素中选择合适的元素放到合适的位置来进...

qq_33289077的博客 3万+

智能座舱(七)——智能音频系统

本文剖析车载智能音频系统的核心技术,聚焦音响、功放、麦克风和广播收音机四大组件。音响系统通过多声道布局(如23扬声器阵列)结合动态声场校准算法,实现三维声场覆盖;功放系统采用高效D类技术,支持OTA音效调整和故障自愈;麦克风阵列运用波束成形技术实现精准拾音,并保障隐私安全;广播系统融合数字与网络技术提升音质。核心在于硬件标准化与算法差异化的协同,未来将朝集成化、AI个性化方向发展。

DC20160101的博客 1572

“深入理解”—选择排序算法

选择排序算法有两种:直接选择排序和堆排序

冷血之心的博客 2万+

忆阻器(二)——忆阻模拟器

除了真实的器件,我们也可以用运放和乘法器来搭忆阻模拟器。这节将介绍数学模型、matlab仿真及multisim仿真。 一、数学模型 忆阻分为磁控和荷控两种,这里介绍三次非线性磁控忆阻模型: {I=W(φ)VW(φ)=a+3bφ2dφdt=V \begin{cases} I=W(\varphi)V \\ W(\varphi)=a+3b \varphi ^2\\ \frac{d \varphi }{dt}=V \end{cases} ⎩⎪⎨⎪⎧​I=W(φ)VW(φ)=a+3bφ2dtdφ​=V​ 这里的WWW

http://www.icfgblog.com/ 1万+

Ansys Zemax实战:5步搞定衍射光学元件(DOE)设计,附赠超透镜(metalens)避坑指南

本文详细介绍了使用Ansys Zemax进行衍射光学元件(DOE)和超透镜(metalens)设计的5步实战流程。从基础光学系统搭建到相位面设计验证,再到制造准备与实测对比,全面解析了OpticStudio中的关键技巧和常见避坑指南,帮助工程师高效完成复杂光学元件设计。

orange的博客 617

【十大排序算法】选择排序

选择就像是在谱曲,每个决定就是一个音符,只有将它们有序地安排在一起,才能奏响美妙的乐章。

DC1020的博客 2027

图解B+树的插入过程

B+ 树在现代数据库中很常见,如果我们了解它,在工作中可能对性能优化会有更好的帮助! 最近我一直在思考 B+ 树的高度是由什么决定的。知道我了解了 B+ 树的插入过程,才有一种恍然大悟的感觉! 网上的一些资料杂乱无章,不同的数据库可能还有对 B+ 树有不同的实现。但是万变不离其宗,B+ 树的定义,大致如下所示: 总结一下,B+ 树有下面 5 个重要的特点。 B+ 树包含 2 种类型的结点: 内部结点(也称索引结点)和叶子结点。 根结点本身即可以是内部结点,也可以是叶子结点。 根结点的关键字个数最

愿君出走半生,归来时仍是少年 2133

【十大排序算法】----选择排序(详细图解分析+实现,小白一看就会)

在选择排序中,我们是可以将其优化的,即可以一趟选出两个值,一个最大值一个最小值,然后将其放在序列开头和末尾,这样可以使选择排序的效率快一倍。的原理:通过遍历数组,选出该数组中较大的或者较小的,放在数组的起始位置,当遍历完整个数组时排序完成。选择排序是最简单的排序之一,最大的优点就是好理解,不过因为其效率低下,所以在一般情况下不使用。:当一个数已经知道其是 最大/最小 ,并已经将其进行交换之后,那么这个位置是万万不可变动的。当经过 N-1 趟的遍历交换之后,该序列就实现的从小到大的排列了。

2302_78684687的博客 1万+

强化学习(Q-learning、DQN) —— 理论、案例与交互式 GUI 实现

本文详细介绍了强化学习中基于值函数的 Q-learning 算法及深度强化学习的 DQN 方法,从基本理论、数学模型到算法流程均进行了全面阐述。通过迷宫导航、股票交易策略和机器人控制等典型案例,展示了强化学习在处理高维、非线性和时变问题中的强大适应性。为了帮助工程师和研究者更直观地理解强化学习的训练过程,本文还提供了一份基于 Python 与 PyQt6 实现的交互式 GUI 演示系统代码示例,用户可以在线调整参数,实时观察累计奖励和 Q 值的变化,从而更深入地理解算法收敛和策略演化的过程。

闲人编程的博客 1475

fatal: unable to access ‘https://github.com/xxx.git/‘ OpenSSL SSL_connect: SSL_ERROR_SYSCALL 解决方案

 本文主要介绍了fatal: unable to access ‘https://github.com/xxx.git/’: OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443解决方案,希望能对使用git的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 24万+

排序算法--直接选择排序

这里我们的思路就是定义一个变量begin,作为未排序序列的第一个数,定义一个变量mini保存最小数的下标。更要命的,一次交换完,begin和end收缩,a[0]与a[10]的位置已经固定,无法再改动,导致程序越运行越错。这里每次找到最小的那个元素,将其与未排序序列的第一个元素交换,交换后最小的那个元素已经找到,再从未排序序列中找第二小的元素......直到序列完全有序。它的算法思想是每一次从待排序的。根据我们上面的分析,改动版的的代码就是一次完成最大、最小两个数的排序,实际上与一个数的排序并没有什么不同。

2301_77032112的博客 2191

SIMATIC WINCC V8.0安装教程(Win11系统)

SIMATIC WINCC V8.0安装教程(Win11系统)

Robot_PLC_HMI_Automation 9028

常见的排序算法以及选择方法

常见的排序算法 冒泡排序 具体过程可以描述为:首先从数组的第一个元素开始到数组最后一个元素为止,对数组中相邻的两个元素进行比较,如果位于数组左端的元素大于数组右端的元素,则交换这两个元素在数组中的位置,此时数组最右端的元素即为该数组中所有元素的最大值。接着对该数组剩下的n-1个元素进行冒泡排序,直到整个数组有序排列。 //冒泡排序 void BubbleSort(int arr[], int length) { for (int i = 0; i < length; i++) { for (i

CardioidL的博客 678

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

java中的三种排序方法使用:选择排序,冒泡排序,sort方法排序。

1)选择排序 思想:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,放在数列的最前(或最后),直到待排序的数据元素全部排完。 2)冒泡排序 思想:对比相邻元素值,如果满足条件就交换元素值,把较小的元素移动到数组前面,把大的元素移到数组后面(也可以反过来)。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 3)sort方法排序 思想:直

Iro的专栏 2545

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

各种内部排序方法的比较和选择

各种内部排序方法的比较和选择按平均时间将排序分为四类:(1)平方阶(O(n2))排序     一般称为简单排序,例如直接插入、直接选择和冒泡排序;(2)线性对数阶(O(nlgn))排序     如快速、堆和归并排序;(3)O(n1+£)阶排序     £是介于0和1之间的常数,即0(4)线性阶(O(n))排序     如桶、箱和基数排序。各种排序方法比较     简单排序中直接插入最好,快速排序最

::打盹的青蛙专栏:: 7361

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

JavaScript中数组的排序,冒泡排序,选择排序,以及sort方法排序

冒泡排序: **规则:**前后两个数两两进行比较,如果符合交换的条件,就交换两个数的位置; 规律:冒泡排序每一轮排序,都可以找出一个较大的数,然后进行交换位置; 分析:比较的轮数 = 数组的长度 - 1 每一轮比较的次数 = 数组的长度 -当前的轮数; 直接将排序方法定义成.js文件 然后在html文件中使用 function bubble(arr){ for(var i =0 ;i&...

qq_42724864的博客 320

排序方法的选择

各种排序方法的选择:①就平均时间性能而言,快速排序最佳,其所需时间最省,但快速排序在最坏情况下的时间性能不如堆排序和归并排序。当n较大时,归并排序较堆排序省,但归并排序所需的辅助空间最大。 ②简单排序方法中,直接插入排序最简单,当待排序的结点已按键值“基本有序”且n较小时,则应采用直接插入排序或冒泡排序,直接插入排序比冒泡排序更快些,因此经常将直接插入排序和其他的排序方法结合在一起使用。 ③当n很...

iteye_4516的博客 387

java 选择排序方法原理_java常见数据算法_选择排序

选择排序的原理:遍历所有的元素,得到最小的元素,并将最小的元素与左边第一个元素进行交换,再次遍历除了第一个位置的所有元素,得到最小的元素,与左边第二个元素进行交换。当进行第二次遍历的时候,将最小的元素与左边的第二个元素进行交换,如此循环遍历,即可得到排序后的元素。Demo实现的基本基本步骤:1、准备数组2、编写常见的数组操作方法3、编写选择排序的方法4、测试选择排序具体参考如下:package c...

weixin_28752743的博客 274

常用排序方法实现(冒泡排序、选择排序、插入排序、快速排序、sort排序)

冒泡排序 示例:10,2,3,-3,9 ​ 第一轮 每轮比较相邻两个数 总共比较4次 ​ 3 10 4 -3 9 ​ 3 4 10 -3 9 ​ 3 4 -3 10 9 ​ 3 4 -3 9 10 ​ 第二轮 总共3次 第二个较大值确定 ​ 3 4 -3 9 10 ​ 3 -3 4 9 10 ​ ...

GrowingRick的博客 190

排序方法之选择排序

在说排序方法前先说说排序吧! 排序的目的是把一组杂乱无序的元素,通过某种运算,按照从小到大,或者从大到小有序的显示出来. 选择排序是排序方法中常用的一种方法.它是通过(取出-比较-放回)这样的过程把无序的元素有序排列. 选择排序在数组中的应用 将数组中的第一个元素取出,和第二个元素比较,如果第一个元素的值比第二个元素的值大,则把第二个元素放在第一个元素的位置,反之,则放回原来位置,和后面的元素依次比较,直到找出最小值,将最小值放在第一个位置上,也就是0索引处,然后进行第二轮比较,直到有序排列结束. 核心代码

weixin_48340270的博客 282

排序方法总结(1)冒泡排序 选择排序

排序方法是一种基本的、重要的算法,排序的方法有很多,现把一些基本排序方法的算法和c代码列出如下,供大家思考,借鉴,进步。 在进行排序之前首先要做的一件事就是选择排序的准则,即(1)从大到下排列或(2)从小到大排列,在进行排序时就是基于这种准则,这样做的目的是为了避免思路的混乱,清晰的思路是解决问题的第一准则。在选择好排序的准则之后就可以进行排序了。 冒泡排序 冒泡排序的算法是这样的 (1)

liuzuyi200的专栏 1472

七、排序方法:冒泡排序,快速排序,选择排序

排序方法方法分类冒泡排序方法思路快速排序方法思路 方法分类 • 选择排序: 直接选择排序、 堆排序 • 交换排序: 冒泡排序、 快速排序 • 插入排序: 直接插入排序、 折半插入排序、 Shell排序 • 归并排序 • 桶式排序 • 基数排序 冒泡排序 方法 比较相邻的元素。如果第一个比第二个大,就交换它们两个。(从第一个元素开始,两两比较) 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少

吕呵呵的博客 401

关于选择排序的两种实现方法

方法一: 最外层的i代表排序后第i+1小的数(array[0]代表第1小,array[1]代表第2小…以此类推) 内层的j用来筛选未参与排列的数组区,一旦发现有比array[i]还小的数,就与其交换 public static void selectSort1(int[] array){ for(int i = 0 ; i<array.length-1 ; ++i){ for(int j = i+1 ; j<array.length ;j++){

theLuckyLong的博客 389

C++排序方法:插入排序、交换排序、选择排序

数据排序(sorting)是最重要的计算应用之一。例如查字典,字典中的词条是按序存放的,我们才能按字母顺序找到要查的字。又如图书馆的藏书也是按书的编号有序排列的。在计算机上数据库里的资料也是有序排列的。 排序的概念: 排序(sorting)是数据处理中经常使用的一种重要运算,其功能是将数据元素的无序序列调整为有序序列。 数据元素中一般有多个数据项,排序可选择其中一个可排序的数据项(可进行

baozi213的博客 228

三种基本排序方法之选择排序 冒泡排序 插入排序

前言 这是笔者的习惯性叨叨,只关心学习技术的读者可以跳过。 鲁迅曾经说过,不懂数据结构的程序员是不合格的(误)。笔者虽然是电子信息专业,但好像将来的职业也可以算半个程序员。然而由于专业课并未设置数据结构课程,笔者对数据结构的认知仅停留于对C++课程中的数组、链表、栈和队列的一知半解。现在开始认真学习数据结构,中途挑选重要的topic写一写心得。 我使用的参考书是Sartaj Sahni的《数据结构...

Dr_Myst的博客 3587
下一篇: 选择排序法
熬夜不洗澡
博客等级 码龄16年 42粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值