c语言存放索引号,C语言最简单的排序算法冒泡排序并返回排序前索引序号

C语言最简单的排序算法冒泡排序并返回排序前索引序号

C语言最简单的排序算法冒泡排序并返回排序前索引序号

d5023e944e87b61cf95254b7c7f331a0.gif

代码如下(示例):

void UserMain(void)

{

int i, j, tmp;

s8 raw[] = {9, 10, 10, -2, 8, 3, 2, -5, 1, 0, -8, 3, 2, 8}; // 需要排序的原始数据

int length = sizeof(raw)/sizeof(s8);

printf("raw_len: %d\n", length);

s8 *num = (s8 *)tls_mem_alloc(length); // 复制需要排序的数据之后排序

// s8 num[] = {9, 10, 10, 2, -8, 3, 2, 5, 1, 0, 8, -3, -2, -8};

printf("raw:\r\n");

for(i = 0;i < length; i++){

num[i] = raw[i];

printf("%d ",num[i]);

}

printf("\n");

s8 *idx = (s8 *)tls_mem_alloc(length); // 用来保存原数组对应的下标序号

// s8 idx[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};

printf("idx:\r\n");

for(i = 0;i < length; i++){

idx[i] = i;

printf("%d ",idx[i]);

}

printf("\n");

for(j=0; j

{

for(i=0; i

{

if(num[i] < num[i+1])

{

tmp = num[i];

num[i] = num[i+1];

num[i+1] = tmp;

tmp = idx[i];

idx[i] = idx[i+1];

idx[i+1] = tmp;

}

}

}

printf("num:\n");

for(int i=0; i

printf("%d ",num[i]);

printf("\n");

printf("idx:\n");

for(int i=0; i

printf("%d ",idx[i]);

printf("\n");

tls_mem_free(idx);

tls_mem_free(num);

}

如下:

raw_len: 14

raw:

9 10 10 -2 8 3 2 -5 1 0 -8 3 2 8

idx:

0 1 2 3 4 5 6 7 8 9 10 11 12 13

num:

10 10 9 8 8 3 3 2 2 1 0 -2 -5 -8

idx:

1 2 0 4 13 5 11 6 12 8 9 3 7 10

C语言最简单的排序算法冒泡排序并返回排序前索引序号相关教程

普及组2008NOIP 排座椅(排序)

普及组2008NOIP 排座椅(排序) ##1205:排座椅 题目描述 上课的时候总有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情。不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳。同学

南京邮电大学C语言实验报告3v2(仅供参考)

南京邮电大学C语言实验报告3v2(仅供参考) 一、 实验目的和要求 (1)掌握正确的函数定义与调用,需要时会正确使用函数声明。会正确设置形式参数,理解参数传递及程序的执行流程。 (2)理解各种不同存储类别变量的生命期与作用域 (3)进一步熟悉调试器的使

数据结构---顺序表实验(C语言实现)

数据结构---顺序表实验(C语言实现) 顺序表实验 实验目的 实验内容 问题描述 算法 实验代码示例 程序运行示例 输入无错误信息的情况: 人为制造错误信息的情况: 实验目的 1.掌握线性表的基本原理; 2.掌握顺序表的存储结构; 3.掌握顺序表的创建、查找、插

关于JS数组常用方法的剖析-增删改查、字符串转换、数组排序和其

关于JS数组常用方法的剖析-增删改查、字符串转换、数组排序和其它方法 关于JS数组常用方法的剖析 数组也是对象数据类型的,也是由键值对组成的 var ary = [12,23,34];/* * 结构: * 0:12 * 1:23 * 2:34 * length:3 */1. 以数组作为索引(属性名),索引从零开

if语句的用法是什么

if语句是指编程语言,包括c语言、VB、java、汇编语言等中用来判定所给定的条件是否满足,根据判定的结果决定执行给出的两种操作之一,格式为【if(表达式)语句1 [else语句2]】。 if语句的用法: if语句是指编程语言(包括c语言、C#、VB、java、汇编语言等)

Go语言 | 几种常用的排序算法图文解析

Go语言 | 几种常用的排序算法图文解析 作为一个小项目,我已经使用Go编写了一些著名的排序算法。希望对你有用! 冒泡排序是一种非常容易遵循的算法。你需要遍历数组中的每个元素,以查看它是否更大,如果需要,则需要交换它们。你应该多次执行此任务,最终将

Sorting 排序算法: Insertion Sort 插入排序

Sorting 排序算法: Insertion Sort 插入排序 Sorting 排序算法: Insertion Sort 插入排序 文章目錄 Sorting 排序算法: Insertion Sort 插入排序 簡介 參考 正文 算法思想原理 输入 算法思想 算法流程 算法复杂度分析 Java 实现 結語 比较排序算法的时间复杂度

漫画:为什么C语言永不过时?

漫画:为什么C语言永不过时? 来自:码农翻身(微信号:coderising) 后记:这篇漫画主要是科普一下编程语言的发展历史和适用范围。C语言/C++一直是系统级编程的不二之选,在操作系统,编译器,网络,数据库,高性能服务器端软件等领域无人可以争锋,也许在将

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值