【C++实现五种排序方式】教程文章相关的互联网学习教程文章

c++输入一个一维数组进行冒泡排序【代码】

#include<string.h> #include #include<stdio.h> using namespace std; int main() { int i = 0; int j = 0; int n; cout << “请输入你定义的数组长度:” << endl; cin >>n; int *arr = new int[n]; // 指针指向首地址 cout << "请输入数组中元素:" << endl; for (int i = 0; i < n; i++) {cin >> arr[i];}int k = n;while (k>0){for (int i = 0; i<n - 1 ; i++){int temp;if (arr[i] > arr[i + 1]){temp = arr[i];arr[i] = arr...

【蓝桥杯】真题训练 2013年C++B组 题6 三部排序

三部排序标题:三部排序 一般的排序有许多经典算法,如快速排序、希尔排序等。 但实际应用时,经常会或多或少有一些特殊的要求。我们没必要套用那些经典算法,可以根据实际情况建立更好的解法。 比如,对一个整型数组中的数字进行分类排序: 使得负数都靠左端,正数都靠右端,0在中部。注意问题的特点是:负数区域和正数区域内并不要求有序。可以利用这个特点通过1次线性扫描就结束战斗!! 以下的程序实现了该目...

C++实现五种排序方式【代码】

插入排序 #include <iostream> using std::cout; using std::endl;void printArr(int arr[], int n) {for (int i = 0; i < n; i++){cout << arr[i] << "\t";}cout << endl; }void insert_sort(int arr[], int n) {printArr(arr, n);for (int i = 1; i < n; i++){// 如果当前元素小于前面的已经排序好的递增序列的最后一个元素if (arr[i] < arr[i - 1]){cout << "arr[" << i << "] < "<< "arr[" << i - 1 << "] " << endl;int tmp =...

C/C++基础知识:堆排序【代码】【图】

在大量数据中找最大或最小一些元素时,使用堆排序往往会很高效,那么堆排序是如何实现的呢?首先通过堆进行排序必须得建一个堆,其次得明白升序,降序该建大堆还是小堆? 对于堆排序,我们必须得清楚以下几点: 1.通常我们采用升序建大堆,降序建小堆的方法; 2.建好堆之后,下来就要对堆进行排序了; 以升序为例:首先将这组数据建一个大堆,建好之后交换堆顶与最后一个元素(堆顶元素肯定是堆中最大的数),这会儿最大的那个数就调...

C++笔记:奇葩排序之猴子排序、珠排序、面条排序【代码】

2021-3-17C++笔记:奇葩排序之猴子排序、珠排序、面条排序 奇葩排序 猴子排序(佛系排序)珠排序面条排序完整源代码(实验作业结果,未修改)猴子排序(佛系排序) 随机打乱数组,检查是否排好序,若是,则输出,否则再次打乱,再检查…最佳情况O(n),平均O(n*n!),最坏可执行直到世界的尽头。 无限猴子定理 :一只猴子随机敲打打字机键盘,如果时间足够长,总是能打出特定的文本,比如莎士比亚全集。 如果数据太多,排序时长完全看运...

【蓝桥杯2013C/C++省赛真题】——三部排序【图】

这道题目如果学过快速排序的话,就是快速排序的分割的思路(详细可以看挑战程序设计竞赛2)。里面有3个指针,当p指向的数字比0大的时候,与right指向的数字对换,这样大于0的数字排在了right的右边,而原来right指向的未知数现在也被p所指着,小于p指向的数与left指向的数对换,这样left的左边就全是小于0的数了,同时p和left两个指针往后移动。那么大于0于小于0的数都处理完了,等于0的数要怎么处理呢,按照之前的思路,left指向的...

C++自定义排序算法【代码】

就目前所利用的知识中,有两处用到了自定义排序算法。 第一个是sort函数;第二个是部分排序容器的建立,例如map,set,priority_queue。在此记录一些通用的方法,至于其他更多原理,等有时间在记录。 在C++ STL中,对于 vector,有 sort 函数,可以对 vector 中的元素进行排序。 注意,下面的例子, sort(vec.begin(), vec.end(), cmp()),都加了括号,使用的是函数对象,更快。sort() 只对 array、vector、deque 这 3 个容器提供...

冒泡排序原理及C++代码的实现【图】

冒泡排序实现的原理 例如要对这几个数按从小到大的顺序排序 3 5 2 4 6 1 6个数进行冒泡排序:3 5 2 4 6 1 第一轮比较: 第1次比较:3和5比较,3<5 ,3和5位置不变,结果:3 5 2 4 6 1 第2次比较:5和2比较,5>2 ,5和2交换位置,结果:3 2 5 4 6 1 第3次比较:5和4比较,5>4 ,5和4交换位置,结果:3 2 4 5 6 1 第4次比较:5和6比较,5<6 ,5和6位置不变,结果:3 2 4 5 6 1 第5次比较:6和1比较,6>1 ,6和1位置交换,结果:3 2 4 5 1 ...

PAT甲级1141 PAT Ranking of Institutions :[C++题解]结构体、排序、哈希表、结构体构造函数、结构体内写函数、排名【代码】【图】

文章目录 题目分析题目来源题目分析来源:acwing 分析:和下面这题是一道题: PAT甲级1137 Final Grading:[C++题解]结构体、排序、哈希表、结构体构造函数、结构体内写函数 排名得记录一下,做过几道类似的题目:学校首先按加权总分排行。如有并列,则应对应相同的排名,并按考生人数升序输出。这种处理方式是设一个变量rank,如果分数不一样的话,排名rank就等于前面的人数+1;如果分数一样的话,rank不变。 样例: 5 1 cmu 192 2...

yp极简 冒泡排序(C++)【代码】

目录: 思路:伪代码:代码: 思路: 顾名思义,冒泡排序法就是让数组元素像水中的气泡一样逐渐上浮,进而达到排序的目的。 伪代码: bubbleSort(A,N)flag = 1while flag flag = 0for j从N-1到1if A[j] < A[j-1]A[j]与A[j-1]交换flag= 1改进: bubbleSort(A,N)flag = 1i = 0//未排序部分的起始下标while flag flag = 0for j从N-1到i+1if A[j] < A[j-1]A[j]与A[j-1]交换flag= 1i++代码: void bubbleSort(int A[],int N){bool flag ...

LeetCode 33. 搜索旋转排序数组(C++) 二分查找【代码】【图】

升序排列的整数数组 nums 在预先未知的某个点上进行了旋转(例如, [0,1,2,4,5,6,7] 经旋转后可能变为 [4,5,6,7,0,1,2] )。 请你在数组中搜索 target ,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 示例 1: 输入:nums = [4,5,6,7,0,1,2], target = 0 输出:4示例 2: 输入:nums = [4,5,6,7,0,1,2], target = 3 输出:-1示例 3: 输入:nums = [1], target = 0 输出:-1文字题解 二分查找 思路和算法 对于有序数...

排序(c++)【代码】【图】

排序 1. 直接选择排序法 如果要将数据按照非递减序排列,一般的过程是先找到整个数组中最小的元素,并把它放在数组的起始位置,然后在剩下的元素中找最小的并把它放在第二个位置上,对整个数组继续这个过程,最后将得到按从小到大顺序排列的数组。 #include <iostream> #include <cmath> using namespace std;int main() {int lh, rh, k, tmp;int array[] = { 2,5,1,9,10,0,4,8,7,6 };for (lh = 0; lh < 10; ++lh){rh = lh;//将lh往...

C++题目分享之重新排序递增递减类【代码】

题目描述 对于一个整数n,和一个数组a[n],将a[n]中的元素重新排列,使其元素为从小到大或者从大到小的顺序。 输入格式 一个正整数n和数组元素。 输出格式 重新排列后的数组元素,中间用空格隔开。 输入输出样例 输入 #1 7 7 4 2 5 1 3 6 输出 #1 1 2 3 4 5 6 7 这题是我比较前期做的,用的死办法 #include<iostream> using namespace std; int main() {int n,i,j,temp;cin>>n;int a[n];for(i=0;i<n;i++){cin>>a[i];}for(i=0;i<n-1;...

C++实现桶排序【代码】

桶排序 桶排序:将值为 i 的元素放入 i 号桶,最后依次把桶里的元素倒出来。 桶排序序思路: /*设置一个定量的数组当作空桶子。 寻访序列,并且把项目一个一个放到对应的桶子去。 对每个不是空的桶子进行排序。 从不是空的桶子里把项目再放回原来的序列中。 假设数据分布在[0,100)之间,每个桶内部用链表表示,在数据入桶的同时插入排序,然后 把各个桶中的数据合并。 */#include<iterator> #include<iostream> #include<vector> ...

C++之冒泡排序实现【代码】

#include<iostream> #include<string>using namespace std;void sort(int * a, int len) {int i, j, q;for ( i = 0; i < len-1; i++){for (j = 0; j < len - 1; j++){if (a[j] > a[j + 1]) {q = a[j];a[j] = a[j + 1];a[j + 1] = q;}}} }int main() {int a[6] = { 222, 10, 5, 799, 3, 2 };sort(a, 6);int i;for (i = 0; i < 6; i++) {cout << a[i] << endl;}cout << "-----------" << endl;//另外种写法,通过sizeof获得数组的长度...