void BinaryInsertionSort(int a[],int left,int right);//对数组a[left]到a[right]段数据从小到大排序void BinaryInsertionSort(int a[],int left,int right)
{int low,middle,high;int temp;int i,j;//待排元素left+1 ---> right 共right - left个,a[left]默认有序for (i=left+1;i<=right;i++){ temp = a[i];low = left; high = i - 1; //i-1为已排好序列的右边界while(low<=high){middle = (low + high) / 2;if (...
让字符串向量首先按字符串长度进行排序,长度短的在前,长的在后。如果长度相等则按字典序排序,并移除重复的字符串。去重复并按字典序排序:void elimDumps(vector<string> &words)
{// 按字典序排序sort(words.begin(), words.end());// unique重排输入范围,使得每个单词只出现一次// 并排列在范围的前部,返回指向不重复区域之后一个位置的迭代器auto end_unique = unique(words.begin(), words.end());// 删除重复单词words.e...
#include <iostream>using namespace std;// 冒泡排序 (和鱼冒泡泡一样,从底部往水面冒)
void BubbleSort(int A[], int n) {int i, j; // 冒泡中两层循环用到bool flag; // 判断排序是否结束for (i = 0; i < n - 1; ++i) { // 冒泡排序因为是将一个个值不停的冒到最终位置(也就是一次冒泡确定一个值的顺序),所以最多就n - 1次冒泡,其实可以试一下10,9,8,7,6,5这个逆序,当第五次冒泡结束后,5就在第一个了,不需要再继续了fla...
//合并排序
#include <iostream>
#include <iomanip>
using namespace std;void sort(int c[],int a[],int b[],int n)
{int i=0;int j=0;//aint k=0;//bwhile(k!=5 && j!=5) { if(a[j]>b[k]){c[i++]=b[k++];}else{c[i++]=a[j++];}}while(j!=5){c[i++]=a[j++];}while(k!=5){c[i++]=b[k++];}
}int main()
{int a[]={2,3,4,5,8};int b[]={0,1,7,9,10};int c[10];sort(c,a,b,5);for(int i=0;i<10;i++){cout<<setw(4)<<c[i];} cout<<end...
原创文章,转载请注明出处!博客文章索引地址博客文章中代码的github地址# 预备知识 堆是一种特殊的树形数据结构,即完全二叉树。堆分为大根堆和小根堆,大根堆为根节点的值大于两个子节点的值;小根堆为根节点的值小于两个子节点的值,同时根节点的两个子树也分别是一个堆。 # 基本思路步骤一:建立大根堆--将n个元素组成的无序序列构建一个大根堆,步骤...
算法描述:从数组第二个元素开始向后扫描,将每个元素插到它前面所有元素的合适位置。下面给出整数数组的实现,对于其他复杂类型只需实现相应的自定义比较函数即可:#include <iostream>
#include <math.h>
using namespace std;
const int Num=20;
void exch(int* s,int a,int b)
{int mid=s[a];for(int i=a;i>b;i--){s[i]=s[i-1];}s[b]=mid;
}
int main()
{
int array[Num];
int min=0;
srand(2);//初始化随机数
for(int i=0;i<N...
#include <iostream>
/*
输入一行字符串仅由小写字母所构成。 输出为一行,按 aa, bb, cc, …, zz 在字符串中的出现次数按从多到少, 将 aa, bb, cc, …, zz 排序,不同字母间以一个空格隔开,忽略行末空格。 阐述: 1.计算出现次数时是可重叠的,即在字符串 "aaaa" 中,aa 出现了三次 2.若出现次数相同,则按照字典序升序排列,比如若是ee,dd 都出现 1 次,则 dd 放在 ee 前面 3.若aa, bb, cc, …, zz 都没有出现过,则什么都不用...
信息学中排序是一个重要的技能,排序算法的种类也丰富多样,而排序就是对于一个无序数组让其变得如何有序的过程。而排序中最简单、也是最基础的一种算法也就是选择排序。例题洛谷1177 排序题目描述
将读入的 N 个数从小到大排序后输出。输入格式
第 1 行为一个正整数 N。
第 2 行包含 N 个空格隔开的正整数 a[i],为你需要进行排序的数,数据保证了a[i]不超过10^9。
?
输出格式
将给定的 N个数从小到大输出,数之间用空格隔开。输入...
冒泡排序算法C++#include <iostream>
using namespace std;
template<typename T>
//整数或浮点数皆可使用
void bubble_sort(T arr[], int len)
{int i, j; T temp;for (i = 0; i < len - 1; i++)for (j = 0; j < len - 1 - i; j++)if (arr[j] > arr[j + 1]){temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}
}
int main()
{int arr[] = { 61, 17, 29, 22, 34, 60, 72, 21, 50, 1, 62 };int len = (int) sizeof(arr) / siz...
大家好,今天带来的是自己实现的用C++完成基数排序.在数据结构,算法分析和程序设计的学习过程中,我们经常也无法避免的要学到排序的算法.排序算法是程序设计过程中使用频率极高的算法之一,其输入是一组无序的序列,要求以升序或者降序的方式输出一组有序的序列.对于如二分查找等算法,要求输入是有序的序列,也就是要先排序后查找,由此可见排序算法的重要性. 广为人知的排序算法有冒泡排序,还有选择排序,插入排序.高级一些的有快速排...
1/*************************************************************************2 > File Name: HeapSort.cpp3 > Author: zhoukang4 > Mail: zhoukang199191@126.com 5 > Created Time: 2014年08月11日 星期一 22时36分38秒6 ************************************************************************/ 7 8 #include <iostream>9 #include <vector>
10 #include <algorithm>
11usingnamespace std;
1213void max_hea...
1 #include <iostream>2usingnamespace std;3int BubbleSort(int A[],int n);4int OutPut(int A[],int n);5int main()6{7int A[]={5,1,3,2,4};8 BubbleSort(A,5);9 OutPut(A,5);
10return0;
11}
1213int BubbleSort(int A[],int n)
14{
15for(int i=0;i<n-1;i++)
16 {
17for(int j=i+1;j<n;j++)
18 {
19if(A[i]>A[j])
20 {
21int temp=A[i];
22 A[i]=A[j];
23 A[j]=...
假定一组随机数,然后快速找到第num位置的数#include<iostream>
#include<ctime>
usingnamespace std;#define number 10
#define num 7int main()
{srand((unsigned int)time(NULL));int arr[number];int flag=0;//生成随机数组for (int i = 0; i < number; i++){//生成1~10随机数arr[i]=rand()%number+1;}//显示生成的随机数组for (int i = 0; i < number; i++){cout<<arr[i]<<"\t";flag++;if ((flag%10) == 0){cout<<endl;}}//桶...
// Sort.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include <stdlib.h>/************************************************************************//* copyright (c) 2014 kernel_main
/* c++面试常考点
/* 转载请注明出处:http://www.cnblogs.com/kernel0815/
/************************************************************************///交换两个数void swap(int &a, int &b)
{int tmp = a;a = b;b = tm...
插入排序(C++)插入排序:写这篇博文是为了增加对数据结构和算法的理解,同事增加编程的基本功。当要对如下数据进行排序:2,8,5,4,6,7,12,8,5,4,6,7,1 采用插入排序是的步骤:2,8,5,4,6,7,1 取元素8和2对比,8比2大,不用移动2,8,5,4,6,7,1 取元素5,和8比较2,5,8,4,6,7,1 由于8比5大,将8向后移动,将5反正原来8的位置,5>3不再移动...1,2,4,5,6,7,8即每取一次元素都与前一个元素对比,由于每一个嵌套循环都花费N次迭代,...