#include <stdio.h>
#include <stdlib.h>
#define SORT_ASCENDING (1)
#if SORT_ASCENDING
#define compare_num(a,b) ((a) > (b))
#else
#define compare_num(a,b) ((a) < (b))
#endif
#define NUM (10)
//======================================================================================
int print_num(int data[])
{
int n;
for (n = 0; n < NUM; n++)
{
printf("%d ", data[n]);
}
printf("/n");
return 0;
}
int generate_num(int data[])
{
int n;
for (n = 0; n < NUM; n++)
{
data[n] = (rand() - rand()) % 100;
}
print_num(data);
return 0;
}
//======================================================================================
#define swap_num(n, i, j) do { n[i] ^= n[j]; n[j] ^= n[i]; n[i] ^= n[j]; } while (0);
/*
* bubble sort
*/
int bubble_sort(int data[], int num)
{
int i, j;
printf("%s=> ", __FUNCTION__);
for (i = 0; i < num; i++)
{
for (j = i + 1; j < num; j++)
{
if (compare_num(data[i], data[j]))
{
swap_num(data, i, j);
}
}
}
print_num(data);
return 0;
}
/*
* select sort
*/
int select_sort(int data[], int num)
{
int i, j, x;
printf("%s=> ", __FUNCTION__);
for (i = 0; i < (num - 1); i++)
{
x = i;
for (j = i + 1; j < num; j++)
{
if (compare_num(data[j], data[x]))
{
x = j;
}
}
if (x != i)
{
swap_num(data, i, x);
}
}
print_num(data);
return 0;
}
/*
* insert sort
*/
int insert_sort(int data[], int num)
{
int i, j;
printf("%s=> ", __FUNCTION__);
for (i = 1; i < num; i++)
{
for (j = 0; j < i; j++)
{
if (compare_num(data[j], data[i]))
{
swap_num(data, i, j);
}
}
}
print_num(data);
return 0;
}
/*
* quick sort
*/
int _quick_sort(int data[], int low, int high)
{
int i, j, x;
if (low < high)
{
i = low;
j = high;
x = data[i];
while (i < j)
{
while ((i < j) && compare_num(data[j], x))
{
j--;
}
if (i < j)
{
data[i] = data[j];
i++;
}
while ((i < j) && compare_num(x, data[i]))
{
i++;
}
if (i < j)
{
data[j] = data[i];
j--;
}
}
data[i] = x;
_quick_sort(data, low, i - 1);
_quick_sort(data, i + 1, high);
}
return 0;
}
int quick_sort(int data[], int num)
{
printf("%s=> ", __FUNCTION__);
_quick_sort(data, 0, num - 1);
print_num(data);
return 0;
}
//======================================================================================
int main()
{
int data[NUM];
generate_num(data);
bubble_sort(data, NUM);
generate_num(data);
select_sort(data, NUM);
generate_num(data);
insert_sort(data, NUM);
generate_num(data);
quick_sort(data, NUM);
return 0;
}
相关推荐
嵌入式开发也玩“全家桶”?手把手教你用CLion+PyOCD调试APM32,比OpenOCD更简单
本文详细介绍了如何使用CLion和PyOCD组合进行APM32嵌入式开发,提供从环境配置到实战调试的完整指南。相比传统工具如Keil和OpenOCD,这套方案更轻量、易用,特别适合现代开发者需求,涵盖CMake配置、PyOCD调试技巧及常见问题解决。
C语言--5种基本排序方法
基本排序冒泡排序选择排序插入排序归并排序递归非递归sort替换merge快速排序 冒泡排序 int main() { int a[10] = {3,1,4,5,6}; for(int i = 1; i <= 4; i++) { //进行n-1趟 //第i趟时从 a[0] 到 a[n-i-1] 都与它们下一个数比较 for(int j = 0; j < 5-i; j++) ...
不用SE63逐个翻译!ABAP函数LXE_OBJ_TEXT_PAIR_WRITE批量处理TCODE描述的3种姿势
本文介绍了三种利用ABAP函数LXE_OBJ_TEXT_PAIR_WRITE批量翻译SAP事务码(TCODE)描述的高效方案,旨在替代SE63逐个翻译的低效操作。内容涵盖从基础循环、Excel导入到全自动程序集成的实现方法,帮助开发者显著提升批量翻译效率,并深入解析了SAP翻译体系的核心原理与实战技巧。
数据结构之八种排序(c语言)
8种排序的时间复杂度和稳定性 排序方法 平均情况 最坏情况 最好情况 稳定性 1.冒泡排序 N^2 N^2 n 稳定 2.选择排序 N ...
HexView 脚本自动化工具:从刷写文件处理到批量转换实战
本文详细介绍了如何利用HexView脚本自动化工具高效处理嵌入式刷写文件。通过实战演示,文章展示了如何使用bat脚本实现S19、HEX等格式文件的剪切、填充、合并与批量转换,构建自动化流水线,从而显著提升汽车电子等领域的开发与生产效率。
彩票预测的可能性与算法分析
彩票作为一种以随机数为基础的赌博形式,吸引了大量希望一夜暴富的参与者。尽管许多人希望通过某种方式预测彩票结果,以增加中奖几率,但彩票预测的可能性依然是一个充满争议和误解的话题。本文将探讨彩票是否能够预测的理论依据,分析可能的预测算法,并解释这些算法为何在实际应用中难以奏效。
C语言常见的排序方法
文章目录前言一、冒泡法二、选择法 前言 本文介绍的两种排序方法是冒泡法和选择法,以10个数为例。 提示:以下是本篇文章正文内容是根据谭浩强的《C程序设计》内容。 一、冒泡法 冒泡法顾名思义就是每一趟比较,把最大的数“沉底”,最小的数自然而然会冒上来。 思路:如果有n个数,则要进行n-1趟比较。 在第一趟比较中要进行n-1次两两比较; 在第j趟比较中,要进行n-j两两比较。 代码如下(示例): #include <stdio.h> int main(void) { int i, a[1..
华为MA5620配置宽带及语音实例
华为EPON配置实例1、公共部分和宽带PPPOE部分用串口用户名密码root/mduadminMA5620E>enableMA5620E#configMA5620E(config)#MA5620E(config)#sysnamebigcow/给设备起名字/****之前为公共部一、建vlan和地址bigcow(config)#vlan100...
C语言几种排序算法
1、选择排序 思路:依次选出数组最小的数放到数组的前面。首先第一个元素与后面的所有比较,找出最小的,放入数组第一个;接着第二个与后面所有比较,找出最小放入第二个;依次类推。 代码实现 #include <stdio.h> //print void printbuf(int* buf,int buflen) { for(int i = 0; i < buflen; i++) { printf("%d\t",buf[i]); } printf("\n");
工业金属表面缺陷检测:4种光学成像方案(明/暗/漫/背光)选型与实测对比
本文深入探讨工业金属表面缺陷检测中的4种光学成像方案(明/暗/漫/背光),详细解析其物理原理、适用场景及实测效果。通过对比不同照明方案在铝合金轮毂、不锈钢餐具等实际工业场景中的表现,提供科学的选型决策树,帮助提升缺陷检出率至99%以上,为计算机视觉在工业质检领域的应用提供实用指南。
UniApp消息推送进阶:不用插件实现动态语音播报(含保活策略)
本文详细介绍了在UniApp中实现动态语音播报的进阶方案,无需依赖第三方插件。核心采用透传消息传递动态数据,结合本地TTS引擎合成语音,并针对不同安卓厂商提供了深度通道配置与差异化保活策略,有效解决了App退至后台或被清理后语音播报失效的难题。
排字典顺序排序(c语言)
输入下述8个国家名字的字符串:CHINA、JAPAN、KOREA、INDIA、CANADA、AMERICAN、ENGLAND和FRANCE,将这些国名按字典顺序排序。 #include #include void main() { charstr[8][9]={"CHINA","JAPAN","KOREA","INDIA","CANADA","AMERIC
后仿真中《SDF反标必懂连载篇》之 探究 SDF延迟精度 与 timescale 精度问题
本篇文章,同样属于后仿真中的SDF反标系列文章内容之一。今天,将前仿真中的timescale 和 后仿真中 timescale+sdf 延迟数据,进行贯通讲解。不要忽视这部分内容,因为后仿真的成功准确与否,时间精度问题,很重要。为什么?接下来一一讲解。
C语言实现几种常见排序方法
首先将待排序序列建立成大根堆(或小根堆),然后将根节点与最后一个节点交换位置,这时候最后一个节点已经是有序的了,再对剩余部分的序列进行堆化,得到新的根节点,再将根节点与倒数第二个节点交换位置,以此类推,不断缩小排序范围,直到整个序列有序。桶排序是一种常用的排序算法,它需要根据数据的特点构建若干个桶,将数据分配到相应的桶中并对每个桶中的数据进行排序,最后按照桶的顺序依次输出所有数据。在桶排序过程中,需要将待排序序列分配到若干个桶中,然后对每个桶中的数据进行排序,最后按照桶的顺序依次输出所有数据。
Data-Structures-and-Algorithm-Analysis-in-Java.pdf
作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...
Camera2Demo
在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作
数据排序的几种方法(c语言实现)
/* 功能:用以下几种方法实现c语言中的常用排序 */ #include "stdio.h" void select_Sort1(int a[],int n); void select_Sort2(int a[],int n); void bubble_Sort(int a[],int n); void insert_Sort(int a[],int n); void quick_Sort(
STM32F407中文手册
STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。
几种常见的排序方法(C语言实现)
#include <stdio.h> #include <stdlib.h> #include <Windows.h> //直接插入排序 void InsertSort(int arry[], int n) { int i, j; int temp;//临时变量 for (i = 1; i < n;...
几种排序方法的实现 (C语言)
很想把数据结构中的程序都自己写一遍:这里是排序算法的程序,但是只写了一点点,还没有完全写好,等写好了再来改,最近很忙,感觉很忙,很多课程都要交报告,加上我编写代码的能力简直逊的要死......唉,悲啊...但我要慢慢学着写程序,一点一点来,真的不想让那些真心帮助过我的人失望, 不想让你们失望。觉得人生命的一半多不是在为自己活着... 呵呵,但是感觉是开心的. 有一天你看到我成
简单的几种排序方法(C语言)
#include <stdio.h> //希尔排序 void shellsort(int a[], int n) { int j; int d = n; while (d > 1) { d = d / 2; for (int x = 0; x < d; x++) { for (int i = x + d; i < n; i = i + d) { int temp = a[i]; for (j = i - d; j > -1 &
C语言数据结构--排序之直接插入排序、希尔排序、起泡排序、快速排序、简单选择排序和堆排序
代码前面的声明: #include <stdio.h> #include <stdlib.h> #include <time.h> //顺序表我是随机生成的伪随机数,引入time.h头文件 #define MAXSIZE 20 //顺序表的最大长度 #define EQ(a,b) ((a) == (b)) //a = b #define LT(a,b) ((a) < (b))//a<b #define LQ(a,b) ((a) <= (b))/a<
江哥带你玩转C语言 | 11- C语言排序算法
计数排序(Counting Sort) 计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,快于任何比较排序算法。 排序思路: 1.找出待排序数组最大值 2.定义一个索引最大值为待排序数组最大值的数组 3.遍历待排序数组, 将待排序数组遍历到的值作新数组索引 4.在新数组对应索引存储值原有基础上+1 简单代码实现: int main() { // 待排序数组 int nums[5] =
C语言进阶——基于数组的排序
普通选择排序 1、实现原理和思想(升序): 1)在未排序的数组中,选择首元素与其后元素进行比较,若其后元素比首元素大,则两元素交换,直至比较到最后一个元素,这是第一轮比较,得到首元素有序。 2)接下来从第2个,第3个元素…重复1)的步骤,直至剩下最后一个元素,则最后一个元素也是有序,是本组元素的最大值。 #include<stdio.h> #include<stdli...
常见的排序算法——C语言实现
以下是几种常见的排序算法的C语言实现。
C语言常用排序方法大全
C语言常用排序方法大全 /* ============================================================================= 相关知识介绍(所有定义只为帮助读者理解相关概念,并非严格定义): 1、稳定排序和...
C语言中三种常见排序算法分析
C语言中三种常见排序算法分析 一、冒泡法(起泡法) 算法要求:用起泡法对10个整数按升序排序。 算法分析:如果有n个数,则要进行n-1趟比较。在第1趟比较中要进行n-1次相邻元素的两两比较,在第j趟比较中要进行n-j次两两比较。比较的顺序从前往后,经过一趟比较后,将最值沉底(换到最后一个元素位置),最大值沉底为升序,最小值沉底为降序。 算法源代码: # include
c语言四大排序
#include void bubble_sort(int* a,int num); void select_sort(int* a,int num); void select_sort_2(int* a,int num); void insert_sort_1(int* a,int num); void insert_sort_2(int* a,int num); void quic
464



被折叠的 条评论
为什么被折叠?



