当前位置: 首页 > news >正文

冒泡排序 简单选择排序 插入排序 快速排序

bubblesort

两个for循环,从最右端开始一个一个逐渐有序

#include <stdio.h>
#include <string.h>
#include <stdlib.h>void bubble(int *arr, int len);
int main(int argc, char *argv[])
{int arr[] = {1, 2, 3, 4, 5, 6, 7};int len = sizeof(arr) / sizeof(int);bubble(arr, len);for (int i = 0; i < len; i++){printf("%d ", arr[i]);}putchar(10);return 0;
}void bubble(int *arr, int len)
{for (int i = 0; i < len - 1; i++){int count = 0;for (int j = 0; j < len - 1 - i; j++){if (arr[j] < arr[j + 1]){arr[j] ^= arr[j + 1];arr[j + 1] ^= arr[j];arr[j] ^= arr[j + 1];count++;}}if (count == 0){break;}}
}

selectsort

假设是升序,两个for循环,从最左端开始一个一个逐渐有序,找到lengh-1个无序区的最小值

#include <stdio.h>
#include <string.h>
#include <stdlib.h>void selectSort(int *arr, int len);
int main(int argc, char *argv[])
{int arr[] = {1, 2, 3, 4, 5, 6, 7};int len = sizeof(arr) / sizeof(int);selectSort(arr, len);for (int i = 0; i < len; i++){printf("%d ", arr[i]);}putchar(10);return 0;
}void selectSort(int *arr, int len)
{int i, j;int min;for (i = 0; i < len - 1; i++){min = i;for (j = i + 1; j < len; j++){if (arr[j] > arr[min]){min = j;}}if (i != min){arr[min] ^= arr[i];arr[i] ^= arr[min];arr[min] ^= arr[i];}}
}

insertsort

两个for循环,从最左端开始一个一个逐渐有序,默认第一个就是有序区,第一个for遍历无序区,第二个for循环遍历有序区,为无序区的元素的插入挪出合适的位置

#include <stdio.h>
#include <string.h>
#include <stdlib.h>void insertSort(int *arr, int len)
{int i, j;int temp;for (i = 1; i < len; i++){temp = arr[i];for (j = i - 1; j >= 0; j--){if (arr[j] > temp){arr[j + 1] = arr[j];}else{break;}}arr[j + 1] = temp;}}int main(int argc, char *argv[])
{int arr[] = {11, 2, 3, 4, 5, 6, 7};int len = sizeof(arr) / sizeof(int);insertSort(arr, len);for (int i = 0; i < len; i++){printf("%d ", arr[i]);}putchar(10);return 0;
}

quicksort

#include <stdio.h>
#include <string.h>
#include <stdlib.h>int oneSort(int *arr, int low, int high)
{int key = arr[low];while (low < high){while (low < high && arr[high] >= key){high--;}arr[low] = arr[high];while (low < high && arr[low] <= key){low++;}arr[high] = arr[low];}arr[low] = key;return low;
}void quickSort(int *arr, int low, int high)
{if (low >= high){return;}int mid = oneSort(arr, low, high);oneSort(arr, low, mid - 1);oneSort(arr, mid + 1, high);
}int main(int argc, char *argv[])
{int arr[] = {11, 2, 3, 4, 5, 6, 1};int len = sizeof(arr) / sizeof(int);quickSort(arr, 0, len - 1);for (int i = 0; i < len; i++){printf("%d ", arr[i]);}putchar(10);return 0;
}

脑图

 

#!/bin/bashfunction fun()
{read -p "请输入用户名:" usernamestr=`grep -w $username /etc/passwd`if [ -n "$str" ]thenecho `id -u $username`echo `id -g $username`elseecho "用户不存在"fi
}arr=(`fun`)
echo ${arr[*]}

http://www.lryc.cn/news/123356.html

相关文章:

  • linux文件I/O之 open() 函数用法
  • 用Java操作MySQL数据库
  • SpringBoot启动报错:java: 无法访问org.springframework.boot.SpringApplication
  • Vue3 setup语法糖 解决富文本编辑器上传图片64位码过长问题 quill-image-extend-module
  • 百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
  • 论文浅尝 | CI4MRC:基于因果推断去除机器阅读理解中的名字偏差
  • 【校招VIP】测试计划之黑盒测试白盒测试
  • 学习笔记整理-JS-01-语法与变量
  • PHP之PHPExcel
  • Redis系列(一):深入了解Redis数据类型和底层数据结构
  • javaScript:如何获取html中的元素对象
  • 面试总结-webpack/git
  • 深入解析美颜SDK:算法、效果与实现
  • ChatGPT Plus和ChatGPT对比
  • 计算机网络 运输层 TCP连接建立、释放
  • npm run xxx 的时候发生了什么?(以npm run dev举例说明)
  • 图解结构体大小和位域例子
  • 游戏行业实战案例 5 :玩家在线分布
  • TypeScript 关于对【泛型】的定义使用解读
  • 盛元广通食品药品检验检测实验室LIMS系统
  • 【数据结构】-- 栈和队列
  • 使用SpringAop切面编程通过Spel表达式实现Controller权限控制
  • Flutter:简单搞一个内容高亮
  • 2023/08/10
  • LeetCode 1289. 下降路径最小和 II:通俗易懂地讲解O(n^2) + O(1)的做法
  • Coin Change
  • 2023 8 -14链表OJ
  • 大数据必回之LSM树
  • Vue中的Object.defineProperty详解
  • MySQL高阶知识点(一)一条SQL【更新】语句是如何执行的