排序算法
Created|Updated|算法
|Word Count:122|Reading Time:1mins|Post Views:
排序算法
经典的排序算法总共有十种。分别是:冒泡、选择、插入、希尔、归并、快排、堆排、计数、桶排、基数。他们都是内部排序。
关于内部排序和外部排序:
- 内部排序:待排序列数据记录完全存放在内存中
- 外部排序:排序的数据很大,一次不能容纳全部的排序记录,在排序过程中还需要访问外部存储器
冒泡排序
Author: LDK
Copyright Notice: All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
Related Articles
2025-07-06
C++新标准
C++新标准 C++ 11 语法特性: auto decltype 返回类型后置(auto+decltype) 右值引用 列表初始化 移动语义(std::move) 万能引用(T&&) 智能指针(share_ptr; wake_ptr; unique_ptr) 范围for循环 委托构造函数 继承构造函数 final和override default 函数delete explicit constexpr 强类型枚举(enum class) 原始字符串字面量 基于范围的for循环 lambda表达式 内联命名空间 右>的优化 noexcept char32_t和char16_t 库特性: chrono库 thread库 std::function std::bind std::move std::forword:与万能引用配合使用 std::array std::to_string() std::tuple(元组) std::tie std::ref std::make_shared 无序容器: std::unordered_map std::unor...
2025-07-06
C++ string分割
string分割 方法一:使用find()和substr(). 用字符分割字符串: 1234567891011121314151617181920// 使用字符分割void Stringsplit(const string& str, const char split, vector<string>& res){ if (str == ""){ return }; //在字符串末尾也加入分隔符,方便截取最后一段 string strs = str + split; size_t pos = strs.find(split); // 若找不到内容则字符串搜索函数返回 npos while (pos != strs.npos) { string temp = strs.substr(0, pos); res.push_back(temp); //去掉已分割的字符串,在剩下的字符串中进行分...
2025-07-06
C++ 获取文件大小
获取文件大小 1234567891011121314151617181920#include <sys/stat.h>// 通过stat结构体 获得文件大小,单位字节size_t getFileSize(const char *fileName) { if (fileName == nullptr) { return 0; } // 这是一个存储文件(夹)信息的结构体,其中有文件大小和创建时间、访问时间、修改时间等 struct stat statbuf; // 提供文件名字符串,获得文件属性结构体 stat(fileName, &statbuf); // 获取文件大小 size_t filesize = statbuf.st_size; return filesize;}
2025-07-06
Linux多进程编程
Linux多进程 基本函数 fork()函数 用于创建一个进程,所创建的进程复制父进程的代码段/数据段/BSS段/堆/栈等所有用户空间信息;在内核中操作系统重新为其申请了一个PCB,并使用父进程的PCB进行初始化。 1pid_t fork(); // pid_t实际上时int类型 fork时可以看作==父进程在fork执行的位置进行了一次分裂,分裂出一个子进程==。父进程从fork的返回值得到子进程的pid,子进程在fork位置得到返回值0,并且从fork的下一句开始执行。 使用实例: 12345678910111213141516171819int main(){ pid_t fpid; //fpid表示fork函数返回的值 int count = 0; fpid = fork(); if (fpid < 0) cout << "error in fork!" << endl; else if (fpid == 0) { cout <<...
2025-07-06
C++ Linux 系统调用
前置知识:[[标准IO]] 详细系统调用请查阅man手册 open() 打开文件 123456789101112131415# include <unistd.h> // close函数# include <fcntl.> // open函数# include <stdio.h>int main(int argc, char* argv[]){ int fd = open("./dict.txt",O_RDONLY); // 以只读模式打开dict.txt,参数里面是字母O,不是数字0 // int fd = open("./dict.txt",O_RDONLY|O_CREAT, 0644); // 创建并打开文件dict.txt,设置权限为:rw-r--r-- if(fd==-1) { printf("file open error!"); } close(fd); // 关闭文件描述符 return 0;} close() ...
2025-07-06
socket编程
基本函数和结构体 创建socket int socket(int domain, int type, int protocol) 成功返回0;失败返回-1,同时设置错误代码errno。 单个进程能够创建socket连接的数量受系统参数open files的限制(使用ulimit -a查看)。因为socket在Linux中也是文件 domain:通信协议族 PF_INET:ipv4协议族 PF_INET6:ipv6协议族 PF_LOCAL:本地通信的协议族 PF_PACKET:内核底层的协议族 PF_IPX:IPX Novel协议族 其余协议族不常用 type:数据传输的类型 SOCK_STREAM:面向连接的socket, 数据不会丢失 数据顺序不会错乱 双向通道 SOCK_DGRAM:无连接的socket, 传输效率更高 数据可能丢失 数据顺序可能错乱 protocal:最终使用的协议 在ipv4协议族中,数据传输方式为SOCK_STREAM的协议只有IPPROTO_TCP,数据传输方式为SOCK_DGRAM的协议只有IPPROTO_UDP. 该参数也可以...