{"id":19685244,"url":"https://github.com/ckjbug/algorithms-data-structures","last_synced_at":"2026-03-04T06:33:04.576Z","repository":{"id":130415404,"uuid":"76265829","full_name":"ckjbug/Algorithms-Data-structures","owner":"ckjbug","description":"算法（ACM）和数据结构总结\u003c本\u003e","archived":false,"fork":false,"pushed_at":"2016-12-12T16:21:55.000Z","size":6,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-27T08:09:37.697Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ckjbug.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-12-12T14:49:44.000Z","updated_at":"2016-12-12T14:49:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"aa275290-0bc0-4d41-9e30-ca61266caaff","html_url":"https://github.com/ckjbug/Algorithms-Data-structures","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ckjbug/Algorithms-Data-structures","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ckjbug%2FAlgorithms-Data-structures","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ckjbug%2FAlgorithms-Data-structures/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ckjbug%2FAlgorithms-Data-structures/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ckjbug%2FAlgorithms-Data-structures/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ckjbug","download_url":"https://codeload.github.com/ckjbug/Algorithms-Data-structures/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ckjbug%2FAlgorithms-Data-structures/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30074176,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T05:31:57.858Z","status":"ssl_error","status_checked_at":"2026-03-04T05:31:38.462Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-11T18:21:06.807Z","updated_at":"2026-03-04T06:33:04.531Z","avatar_url":"https://github.com/ckjbug.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Algorithms-Data-structures\n算法（ACM）和数据结构总结\u0026lt;本\u003e\n#一，\n#排序算法[baidu](http://baike.baidu.com/link?url=4KBTW3C3Mtm28l5sddOUvHnc6AnYebw6pga6WqARZssLj9LNrw32cZPfpC9k411tOfTRGSKfISaLfSzW2BWDUZEt3Um3n-eCAid4nnadFBlxM_uMre5V1DxZkUq3Oow6)\n[动态理解参考1](http://blog.csdn.net/left_la/article/details/8648133)\n[动态理解参考2](http://blog.jobbole.com/11745/)\n现在我们涉及到的排序算法大都是内排序（待排序的数据全都放在内存当中），还有一种排序为[外排序](http://baike.baidu.com/link?url=LrgAFCqJzO8gc2Xgqmg_XzLyts5DDqRRcyKCzaWGqshuBrFKG-rwQpv_ueouJCHBN-ebt01ip46fEgPZzF9zNg9f35INuvEUk7gPvTTNQCRPvvU3-MZHY-Pm28ramF8e)（大部分数据因为太多放在外存当中）——百度搜索引擎等一些大数据的处理，一般用后缀（组）实现。\n# 1，[插入排序](http://baike.baidu.com/link?url=Z9Ppdy8MbZjKBIdhP2W-oDhnzIjnPEXL0rjjNnz_zbzGJo7KkQx9H4EZh9K6ZOFMTFbJbdjA6S1ITRJbsfcVGDb1RVT3ACY7JY1q2m-xdjWPW5RPoPZ7qd5mYFG2fAEh)\n\n1.1 直接插入排序InsertSort（sort函数）\n伪代码及特征：单键，数组，我们讨论正序排序，r[0]起到暂存待插关键码和哨兵（防越界，减掉），一般初始存入的数据从r[1]开始，排序时从r[2]开始暂存于r[0]，然后和前面一个r[1]开始比较，后面依次从后面开始向前面一个一个比较。比较稳定，空间上只需要一个辅助空间单元r[0],时间复杂度O(n)-O(n^2),可对该算法进行优化改进，后面的查找改为折半查找，但会失去稳定性（排序前后相同的数据是否相同），查找的次数减少但移动的次数不会改变，可根据具体的应用来改进。\n\n\u003e viod InsertSort(int r[],int n)//0号单元用作暂存单元和监视哨兵\n\u003e {\n\u003e  for(i = 2; i \u003c= n; i++)\n\u003e  {\n\u003e    r[0]=r[i];  //暂存关键码  \n\u003e    for(j = i-1; r[0] \u003c r[j]; j--)//寻找插入位置\n\u003e    r[j+1] = r[j];//记录后移\n\u003e    r[j+1] = r[0];\n\u003e  }\n\u003e }\n适用范围：当前记录基本有序或待排序记录比较少时。\n\n1.2 希尔排序shell sort伪代码\n伪代码及特征：待排序列记录按关键码基本有序（基本有序不是局部有序，必须分清楚），其实它是直接插入排序一种改进，只是把后面一个一个开始比较改为了按段（子序列）比较，跳跃式查找待查位置，如序列r[n],n=9,d=「n/2」(理想的是最接近于n/2的2次幂方)，我们这里取d=4；则1、5、9一组比较排序，2、6一组排序，3、7一组排序，4、8一组排序；这才是第一趟排序，第二趟d=「d/2」，及d=2，按相同的方式开始排序，第三趟则是d=1，就是简单的直接插入排序。这里r[0]只是暂存单元，不起哨兵作用，所以要判断越界条件。时间复杂度为O(n^2)-O(n㏒2 n)。不稳定，空间辅助空间也只需要一个r[0]。\n\u003e void ShellSort(int r[],int n)//0号单元作用暂存单元\n\u003e {\n\u003e for(d = n/2; d \u003e= 1; d =d/2)//以增量为d进行直接插入排序\n\u003e  {\n\u003e  for(i =d+1; i \u003c= n; i++)\n\u003e    {\n\u003e    r[0] = r[i];//暂存被插入记录\n\u003e   for(j = i-d; j \u003e 0 \u0026\u0026 r[0] \u003c r[j]; j = j-d;)\n\u003e    r[j+d] = r[j];//记录后移d个位置  \n\u003e    r[j+d] = r[0];\n\u003e    \n\u003e    }\n\u003e  }\n\u003e }\n\n# 2，交换排序([冒泡排序](http://baike.baidu.com/link?url=ZS4KzjXYKoJ2tmkH5VY0Aha-bSPboyzlmSGREJETEoVX0J15X1U4eUVjrzRes-NTBVCokCVR8cCeDNZjPFn0OiVNL-AmVNB0W967c9BaEZYFXXs9uEkG8WgoJCFN-j2W)和[快速排序](http://baike.baidu.com/link?url=EII9VU1EoF8UhfM9DqTP_DWOU8K-NCEL5gm5T3oPwpanN7XusNinqFc3aLff6dYSdSMgOD6gqGD1pXkKYxGKnksG0OvFE6puO_mC1nNr1ND_tnpDgo7UqeiSGTST1OQ_jpCEJCdoLlL0dVyyNwAZJq))\n2.1\n冒泡排序（BubbleSort）\n伪代码及特征：\n\n\u003e void BubbleSort(int r[],int n)//0号单元用作交换操作的暂存单元\n\u003e {\n\u003e   exchange = n;//第一趟冒泡排序的区间是[1，n]\n\u003e   while(exchange!=0)//当上一趟排序有记录交换时\n\u003e   {\n\u003e  bound = exchange;\n\u003e  exchange = 0;\n\u003e  for(j = 1; j \u003c bound; j++)//一趟冒泡，排序区间是[1，bound]\n\u003e      if(r[j] \u003e r[j+1]){\n\u003e      r[j]\u003c----\u003er[j+1];\n\u003e      exchange = j;//记录每一次记录交换的位置\n\u003e  }\n\u003e  \n\u003e  }\n\u003e  \n\u003e }\n\n2.2\n快速排序\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fckjbug%2Falgorithms-data-structures","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fckjbug%2Falgorithms-data-structures","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fckjbug%2Falgorithms-data-structures/lists"}