首页 / C++ / c++几种排序算法代码
c++几种排序算法代码
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c++几种排序算法代码,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2311字,纯文字阅读大概需要4分钟。
内容图文
1 #include <iostream> 2 #include <vector> 3usingnamespace std; 4 5//交换int 6void swap(int& a, int& b){ 7int temp = a; 8 a = b; 9 b = temp; 10} 11 12//冒泡 13void BulletSort(vector<int>& nums){ 14int n = nums.size(); 15for (int i = 0; i < nums.size()-1; i++){ 16for (int j = 0; j < nums.size() - i -1; j++){ 17if (nums[j] > nums[j+1]){ 18 swap(nums[j], nums[j+1]); 19 } 20 } 21 } 22} 23 24//快排 25void fastSort(vector<int>&num, int first, int last){ 26if (first < last){ 27int i = first; 28int j = last; 29int seed = num[i]; 30while (i<j){ 31while (i < j && num[j] >= seed){ 32 j--; 33 } 34if (i < j){ 35 num[i++] = num[j]; 36 } 37while (i <j && num[i] <= seed){ 38 i++; 39 } 40if (i < j){ 41 num[j--] = num[i]; 42 } 43 } 44 num[i] = seed; 45 fastSort(num, first, i - 1); 46 fastSort(num, i + 1, last); 47 } 48 49} 50 51 52//插入 53void InsertSort(vector<int>& nums){ 54int n = nums.size(); 55for (int i = 0; i < n; i++){ 56for (int j = i; j > 0; j--){ 57if (nums[j] < nums[j - 1]){ 58 swap(nums[j], nums[j - 1]); 59 } 60 } 61 } 62} 63 64//归并数组 65void mergeArray(vector<int>&nums, int first, int mid, int last, vector<int>temp){ 66int i = first; 67int j = mid + 1; 68int m = mid; 69int n = last; 70int k = 0; 71while (i <= m&& j<=n){ 72if (nums[i] < nums[j]){ 73 temp[k++] = nums[i++]; 74 } 75else{ 76 temp[k++] = nums[j++]; 77 } 78 } 79while (i<=m){ 80 temp[k++] = nums[i++]; 81 } 82while (j <= n){ 83 temp[k++] = nums[j++]; 84 } 85for (int i = 0; i < k; i++) 86 { 87 nums[first+i] = temp[i]; 88 } 89} 90 91//归并 92void mergeSort(vector<int>& nums, int first, int last, vector<int>temp){ 93if (first<last){ 94int mid = (first + last) / 2; 95 mergeSort(nums, first, mid, temp); 96 mergeSort(nums, mid + 1, last, temp); 97 mergeArray(nums,first,mid,last,temp); 98 99 } 100} 101102int main() 103{ 104 vector<int>test; 105 vector<int>temp(4, 0); 106 test.push_back(2); 107 test.push_back(4); 108 test.push_back(1); 109 test.push_back(3); 110//BulletSort(test); 111//fastSort(test, 0, 3); 112//InsertSort(test); 113//mergeSort(test, 0,3,temp);114return0; 115116 }
几种算法的比较如下图所示
原文:http://www.cnblogs.com/LaplaceAkuir/p/6284900.html
内容总结
以上是互联网集市为您收集整理的c++几种排序算法代码全部内容,希望文章能够帮你解决c++几种排序算法代码所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。