王道c语言-选择排序

选择排序的基本实现步骤:
  1. 从待排序序列中找到最小(或最大)的元素。
  2. 将找到的最小元素与待排序序列的第一个元素交换位置,即将其放置到已排序序列的末尾。
  3. 在剩余未排序元素中继续找到最小(或最大)元素,然后与待排序序列的第二个元素交换位置。
  4. 重复以上步骤,直到所有元素均排序完毕。
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>typedef int ElemType;typedef struct {ElemType *elem;int TableLen;
} SSTable;void ST_Init(SSTable &ST, int len) {ST.TableLen = len;ST.elem = (ElemType *) malloc(ST.TableLen * sizeof(ElemType));int i;srand(time(NULL));for (int i = 0; i < ST.TableLen; ++i) {ST.elem[i] = rand() % 100;}
}void ST_print(SSTable ST) {for (int i = 0; i < ST.TableLen; ++i) {printf("%d ", ST.elem[i]);}printf("\n");
}void swap(ElemType &a, ElemType &b) {ElemType tmp;tmp = a;a = b;b = tmp;
}void BubbleSort(ElemType A[], int n) {int i, j;bool flag;for (i = 0; i < n - 1; i++)//i 最多访问到 8{flag = false;//元素是否发生交换的标志for (j = n - 1; j > i; j--)//把最小值就放在最前面{if (A[j - 1] > A[j]) {swap(A[j - 1], A[j]);flag = true;}}if (false == flag)return;}
}int partition(ElemType *A, int low,int high) {ElemType pivot=A[low];while (low<high){while (low<high&&A[high]>=pivot)high--;A[low]=A[high];while (low<high&&A[low]<=pivot)low++;A[high]=A[low];}A[low]= pivot;return low;
}void QuickSort(ElemType *A, int low,int high) {if(low<high) {int pivot_pos = partition(A, low, high); //分隔值的位置QuickSort(A, low, pivot_pos - 1);QuickSort(A, pivot_pos + 1, high);}
}void InsertSort(ElemType *A,int n){int inserVal,i,j;for (i= 1;  i<n ;i ++) { //外层控制要插入的数inserVal=A[i];  //保存要插入的数//内存控制比较,j>=0,A[j]>inserVal时,A[j]位置元素向后覆盖for (j = i-1; j >=0&&A[j]>inserVal ; j--) {  //从后往前比A[j+1]=A[j];}A[j+1]=inserVal;}
}//从待排序序列中找到最小的元素
void SelectSort(ElemType A[],int n){int min; //min记录最凶暗元素的下标for (int i = 0; i < n; ++i) {min=i;for (int j = i+1; j <n ; ++j) {if(A[j]<A[min]){//不在此处交换,因为可能有很多个比min小的,不能保证下标i是最小值min=j;}}if(min!=i){swap(A[i],A[min]);}}
}//从待排序序列中找到最大的元素
void SelectSort1(ElemType A[],int n){int max; //min记录最凶暗元素的下标for (int i = n-1; i >= 0; --i) {max=i;for (int j = 0;j<i ; ++j) {if(A[j]>A[max]){max=j;}}if(max!=i){swap(A[i],A[max]);}}
}int main() {SSTable ST;ST_Init(ST, 10);ElemType a[10] = {12, 22, 18, 64, 69, 84, 79, 95, 94, 78};
//    memcpy(ST.elem, a, sizeof(a));ST_print(ST);
//    BubbleSort(ST.elem, 10);
//    QuickSort(ST.elem, 0,9);
//    InsertSort(ST.elem,10);SelectSort(ST.elem,10);ST_print(ST);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/785861.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

布隆过滤器:基于哈希函数的原理、应用解析

文章目录 一、引言1、布隆过滤器的概念简介2、布隆过滤器是基于哈希函数的强大工具 二、布隆过滤器基础知识1、布隆过滤器的工作原理2、布隆过滤器的空间效率分析3、布隆过滤器的性能特点 三、布隆过滤器的应用场景1、数据库查询优化2、例子 四、布隆过滤器的实现与优化1、常见…

NFG技术引领电商新潮流:普通商品的高端奢侈品化之路

随着网络技术、移动互联网等科技领域的迅猛进步&#xff0c;电子商务在众多新兴行业中逐渐崭露头角。然而&#xff0c;电子商务的蓬勃发展也带来了产品同质化现象加剧、市场竞争日趋激烈的问题&#xff0c;这使得商品在海量产品中脱颖而出变得愈发困难。值得注意的是&#xff0…

ASTM C629/C629M-22 板岩检测

板岩具有板状构造&#xff0c;由粘土质、粉砂质沉积岩或中酸性凝灰质岩石、沉凝灰岩经轻微变质作用形成&#xff0c;是一种变质岩&#xff0c;主要产于河北一带 板岩具有美观&#xff0c;持久耐用&#xff0c;防滑等优点&#xff0c;是浴室材料的不二选择。 ASTM C629/C629M-…

AI在行业大模型中的机会及爆发赚钱的行业有哪些?

人工智能(AI)正逐渐成为驱动各行业发展的核心力量,尤其是在应用层,AI结合具体细分领域所带来的生产力提升是巨大的。随着技术的不断进步和人口老龄化趋势的加剧,AI将在多个行业中发挥关键作用,为这些行业带来爆发式增长和丰厚的利润。 一、医疗行业:AI辅助诊断的崛起…

Linux:查询类型的命令type

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 type命令是Linux中一个查询类型的命令&#xff0c;它可以查询name是alias别名、keyword关键字、function函数名、builtin内建命令名&#xff08;这很有用&#xff09;或…

Open CASCADE学习|将双曲线转换为B样条曲线

圆锥曲线&#xff08;Conic Section&#xff09;&#xff0c;又称圆锥截线&#xff0c;是二次曲线的一种&#xff0c;它是通过一个平面与一个双圆锥相交而生成的曲线。根据平面与圆锥的相交方式&#xff0c;圆锥曲线可以分为四种基本类型&#xff1a;椭圆、抛物线、双曲线和退化…

redis -Set

一 &#xff0c;Set(集合)介绍 Redis的Set是string类型的无序集合。集合成员是唯一的&#xff0c;这就意味着集合中不能出现重复的数据。Redis 中 集合是通过哈希表实现的&#xff0c;所以添加&#xff0c;删除&#xff0c;查找的复杂度都是O(1)。集合中最大的成员数为 232 - 1…

【粉丝福利社】鸿蒙App开发全流程实战(文末送书-进行中)

&#x1f3c6; 作者简介&#xff0c;愚公搬代码 &#x1f3c6;《头衔》&#xff1a;华为云特约编辑&#xff0c;华为云云享专家&#xff0c;华为开发者专家&#xff0c;华为产品云测专家&#xff0c;CSDN博客专家&#xff0c;CSDN商业化专家&#xff0c;阿里云专家博主&#xf…

Redisson实现限流

1. 引入Redisson 参考: 这篇文章即可。 2. 使用RedissonClinet实现 代码如下&#xff1a; import org.redisson.api.RRateLimiter; import org.redisson.api.RateIntervalUnit; import org.redisson.api.RateType; import org.redisson.api.RedissonClient; import org.spri…

鸿蒙:滑动条组件Slider

滑动条组件&#xff0c;通常用于快速调节设置值&#xff0c;如音量调节、亮度调节等应用场景。 说明 该组件从API Version 7开始支持。 子组件 无 接口 Slider(options?: {value?: number, min?: number, max?: number, step?: number, style?: SliderStyle, direc…

书生 浦语大模型全链路开源体系

通用大模型成为发展通用人工智能的重要途径 书生 浦语大模型的开源历程 书生 浦语 2.0体系&#xff0c;面向不同的使用需求&#xff0c;每个规格包含三个模型版本&#xff0c;&#xff08;7B、20B&#xff09;InternLM2-Base、InternLM2、InternLM2-Chat。 大模型是回归语言建…

数据可视化-ECharts Html项目实战(9)

在之前的文章中&#xff0c;我们学习了如何在ECharts中编写气泡图&#xff0c;词云图。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢。 数据可视化-ECharts Ht…

鸿蒙OS开发问题:【尺寸适配算法】

背景 如何在HarmonyOS 系统上出设计稿&#xff1f; 问题1: 为什么要计算虚拟高度&#xff0c;即 virtualHeight static adaptDimension(value: number): number {let deviceDisplay: display.Display GlobalContext.getContext().getObject(display) as display.Display;le…

PEReDi 完全隐私的央行数字货币方案

第一个对完全隐私保护建模的方案&#xff0c;基于账户模型&#xff0c;要求交易双方都在线。 角色分类 中央银行 B B B&#xff1a;负责发行数字货币和货币政策&#xff0c;但不控制用户账户的状态&#xff0c;没有能力对交易的发送者或接收者进行去匿名化或披露与特定交易相…

瑞吉外卖实战学习--11、分类管理的列表分页查询

分类管理的列表分页查询 前言1、创建接口2、基于分页组件来实现的 前言 通过前端接口可以看到请求和传递的参数&#xff0c;本文章是基于mybatisPlus的分页插件来实现的 1、创建接口 GetMapping("/page")public R<Page> page(int page,int pageSize){ // …

halcon图像腐蚀

1、原理 使用结构元素在图像上移动&#xff0c;只有结构元素上的所有像素点都属于图像中时&#xff0c;才保留结构元素中心点所在的像素&#xff0c;常用于分离连接的两个物体、消除噪声。 2、halcon代码 dev_open_file_dialog (read_image, default, default, Selection) r…

C语言经典例题(12) --- 杨辉三角、井字棋、定闹钟、排电梯、欧几里得

文章目录 1.杨辉三角2.井字棋3.小乐乐定闹钟4.小乐乐排电梯5.小乐乐与欧几里得 1.杨辉三角 题目描述: KK知道什么叫杨辉三角之后对杨辉三角产生了浓厚的兴趣&#xff0c;他想知道杨辉三角的前n行&#xff0c;请编程帮他 解答。杨辉三角&#xff0c;本质上是二项式(ab)的n次方…

【Python刷题】将有序数组转换为二叉搜索树

问题描述 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 平衡 二叉搜索树。 高度平衡的意思是&#xff1a;二叉树是一颗满足“每个结点的左右两个子树的高度差的绝对值不超过1”的二叉树。 示例 1&#xff1a; 输入&#xf…

Java学习33-Java 多线程Thread 多线程安全问题

Thread的生命周期 JDK1.5之前 JDK1.5之后分为 NEW RUNNABLE BLOCKED WAITING TIMED_WAITING TERMINATED 多线程安全问题 举例&#xff0c;要求三个窗口同时卖票&#xff0c;总共有100张票&#xff0c;打印出卖票过程&#xff0c;不允许重复售卖 package Thread;public class …

Codeforces Round 930 (Div. 2) C. Bitwise Operation Wizard

题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 const int maxn 1e6 5, inf 1e9, maxm 4e4 5; co…