totuma.cn
logo 图码 数据结构动画版

注册

登录

  • 线性表

    • 顺序表-数组

    • 单链表-不带头节点

    • 单链表-带头结点

    • 双链表-不带头结点

    • 双链表-带头结点

    • 循环单链表

    • 循环双链表

    • 静态链表

  • 栈和队列

    • 栈-顺序表

    • 栈-链表-带头结点

    • 栈-链表-不带头结点

    • 队列-顺序表

    • 队列-链表-带头结点

    • 队列-链表-不带头结点

    • 队列-顺序表-循环队列

    • 栈-括号匹配-顺序表

    • 栈-表达式计算-顺序表

    • 队列-双端队列

    • 队列-层次遍历

  • 数组

    • 数组-存储结构

    • 压缩存储-对称矩阵

    • 压缩存储-三角矩阵

    • 压缩存储-三对角矩阵

    • 稀疏矩阵-三元组

  • 串

    • 朴素模式匹配

    • KMP 算法

  • 树结构

    • 二叉树-链式存储

    • 二叉排序树-链式存储

    • 哈夫曼树-顺序存储

    • 线索二叉树

    • AVL 平衡二叉树

    • 树存储结构-双亲

    • 树存储结构-孩子

    • 树存储结构-孩子双亲

  • 图结构

    • 存储结构-邻接矩阵

    • 存储结构-邻接链表

    • 广度优先搜索-BFS

    • 深度优先搜索-DFS

    • Prim(普里姆)算法

    • Kruskal(克鲁斯卡尔)算法

    • Dijkstra(迪杰斯特拉)算法

    • Floyd(弗洛伊德)算法

    • BellmanFord(贝尔曼福特)

    • 拓扑排序-栈

    • 关键路径

  • 查找

    • 顺序查找-乱序表

    • 顺序查找-有序表

    • 折半查找

    • B树

    • B+树

    • 红黑树

    • 哈希表-拉链法

    • 哈希表-开放定址法

  • 排序

    • 直接插入排序

    • 折半插入排序

    • 希尔排序

    • 冒泡排序

    • 快速排序

    • 简单选择排序

    • 堆排序

    • 归并排序

    • 基数排序

  • 没有找到想要的算法?
    使用自定义代码可视化编辑器
    或加入用户QQ群反馈(124297522)

BellmanFord(贝尔曼福特)

知识点
0/0
播放
放大
缩小
居中
全屏
放大
缩小
居中
全屏
主要变量

暂无变量

递归栈

栈空

请选择

  • 类型
  • 创建
  • 最小生成树
C/C++
Java
Python
报错
复制代码

开通VIP后可展示正确代码!

#include <stdio.h>

#include <stdlib.h>

#define ElemType int

// 简单选择排序

void SelectSort(ElemType A[], int n){

int i, j, min, temp;

// 外循环:从数组的第一个元素到倒数第二个元素进行遍历

for (i = 0; i < n - 1; i++) {

min = i; // 假设当前位置的元素是最小的

// 内循环:从外循环的下一个位置到数组末尾进行遍历

for (j = i + 1; j < n; j++) {

// 检查是否有比当前最小值更小的元素

if (A[j] < A[min]) min = j;

}

// 如果最小值的索引不等于当前位置索引,说明找到了比当前位置更小的元素

if (min != i) {

temp = A[i]; // 临时变量用于交换元素

A[i] = A[min]; // 将当前位置元素与最小值元素交换位置

A[min] = temp; // 更新最小值位置的元素为当前位置元素

}

}

}

int main (){

// 注意,0号位置是哨兵,不是要排序的值

ElemType arr[9] = {20, 60, 30, 10, 40, 90, 80, 70, 50};

SelectSort(arr, 9);

printf("简单选择排序排序结果:");

for (int i = 0; i < 9; i++) {

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

}

return 0;

}

// 完整代码:totuma.cn

解锁后可查看完整可运行代码!
点击此处体验