1.排序
选择排序(包含中间过程)
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n = 0,x = 0;
scanf("%d",&n);
int a[n];
for(int i = 0;i < n;i++)
{
scanf("%d",&a[i]);
}
for(int i = 0;i < n - 1;i++)
{
x = i;
for(int j = i+1;j < n;j++)//寻找当前最大值
{
if(a[x]>a[j])
{
x=j;
}
}
swap(a[x],a[i]);//交换最大值当前位置与它应该到的位置(的值)
for(int i = 0;i < n;i++)//打印中间过程
{
printf("%d ",a[i]);
}
printf("\n");
}
return 0;
}
冒泡排序(想必各位DaLao都会写吧,在此不过多赘述)
#include<iostream>
#include<cstdio>
#include<string.h>
using namespace std;
int main()
{
int n=0;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
for(int i=1;i<n;i++)
{
for(int j=0;j<n-i;j++)
{
if(a[j]>a[j+1])
{
swap(a[j],a[j+1]);
}
}
for(int i=0;i<n;i++)
{
cout<<a[i] << " ";
}
cout<<endl;
}
return 0;
}
插入排序
#include<iostream>
#include<math.h>
using namespace std;
int a[10000000] = {0},n = 0;
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
for(int i=1;i<n;i++)
{
for(int j=i;j>0;j--)
{
if(a[j]<a[j-1])
{
swap(a[j],a[j-1]);//为下一个插入的元素腾位置
}
else
{
break;//插不动了
}
}
for(int i = 0;i < n;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
return 0;
}
桶排序(空间换时间,但还是很慢,煎煎蛋蛋,十分粗暴)
#include<iostream>
#include<cstdio>
#include<string.h>
using namespace std;
int count[10000000] = {0},maz = 0;
int main()
{
int n=0,a = 0;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a;
count[a-1]++;
maz=max(a,maz);
}
for(int i = 0;i < maz;i++)
{
if(count[i])
{
for(int j = 0;j < count[i];j++)
{
printf("%d ",i+1);
}
}
}
return 0;
}
还有快排,希尔等,篇幅原因,不写了
重头戏————SORT!!!
不得不说,sort是真好用,速度比大部分排序算法都快
代码实现
sort(开始下标,结束下标+1(,自定义函数));
2.进制转换
这个其实也蛮简单,就是有点烦人,后面转2进制特别多
code
#include<bits/stdc++.h>
using namespace std;
int a,b;
string num;
int N_zhuan_D(string a,int n) //n进制转 10进制( n进制数,n)
{
int th_num = 0,re_num = 0; //当前权重 ,当前值,
for(int i = 0;i < a.size();i++) //
{
if(isalpha(a[i]))
th_num = a[i] - 'A' + 10;
else
th_num = a[i] - '0';
re_num = re_num * n + th_num;
}
return re_num;
}
int main()
{
cin>>a>>num>>b;
int s = N_zhuan_D(num,a),x = 0,ans = 0;
string re_num = "";
while(s!=0)
{
x = s % b;
s /= b;
ans++;
if(x<10)
re_num = char('0'+x)+re_num;
else
re_num = char('A' + x - 10)+re_num;
}
cout<<re_num;
return 0;
}//我习惯写先转10进制,再转别的
最后
有些DaLao问我有没有题目,我只能说:“有的,兄弟,有的”
果园大比拼 ID:9165
去重排序 ID:9553
有趣的跳跃 ID:9551
数组重排 ID:3304
双调序列 ID:9550
奇葩的排序 ID:3288
32进制数 ID:15841
有问题可以帖子下面发