ソート:ソートいわゆる必要が一緒にデータの順となっていることです。
1.バブルソート:
バブルの基本的な考え方は、ソート:それは彼らが間違った順序である場合、隣接する二つの要素を比較し、それらが終わっ交換しましょう。例えば、無秩序カラム上の数:5,8,6,3,9,2,1,7、小から大行に配列のは、思考バブルソートに応じて、我々は、隣接する要素はによれば、比較を対毎置きます位置、サイズ交換素子。次のようにプロセスは以下のとおりです。
#include<bits/stdc++.h>
using namespace std;
const int maxn=100;
int a[maxn],x;
void bubble_sort(int n){//n为数组的长度
for(int i=0;i<n;i++){
for(int j=0;j<n-i-1;j++){//这个n-i-1是因为在第一轮冒泡循环后,最大的已经排到了最后。
if(a[j]>a[j+1]){//从大到小排序。
int temp=a[j];//定义一个中间变量来使两个元素互换
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
int main(){
cin>>x;//输入要几个数排序。
for(int i=0;i<x;i++){
cin>>a[i];
}
bubble_sort(x);
for(int i=0;i<x;i++){
cout<<a[i]<<" ";
}
return 0;
}
結果は以下の通りであります:
難易度の理解:
Jここで、<NI-1;なぜ?
バブルソート機能があるので、このプログラムは降順でソートされるので、ソートの最初のラウンドの後、最大数は、右端にフロートします。ソートの第二ラウンドの後、二番目に大きい数は最後から二番目にフロートします二つの位置、仕分けの第三ラウンドの後、三番目に大きい数は......最後の3分の1の位置までフロートします
どのくらいのラウンドを並べ替え、他の言葉では、多くの数字が並ん要件が発注されたことがあり、それらはする必要はありません比較。
書き込みjは<n-1ができますが、プログラムが実装における無駄な努力の多くを行います。
2.並べ替え:
似たトランプの手を手配するためのアイデアや方法の配列に挿入は、例えば、私たちは、この時間を今一枚のカードを保持し、左から右へ、その後カード、ソート降順されている、我々はカードを引く必要がありますアウトは、以前に配置された場所の良い手に挿入され、そして最後のカードが挿入されるまで、この操作を繰り返している、それが並んで。
たとえば、次のように2,5,1,3,6、小規模から大規模なソートへ
#include<bits/stdc++.h>
using namespace std;
const int maxn=100;
int a[maxn],x;
void insert_sort(int n){
int j,temp;
for(int i=1;i<n;i++){
temp=a[i];
j=i-1;
while(j>=0&&a[j]>temp){//向前一个一个判断有没有比它大的数
a[j+1]=a[j];
j--;
}
a[j+1]=temp;//找到它应该在的位置交换
}
}
int main(){
cin>>x;//x个数进行排序
for(int i=0;i<x;i++){
cin>>a[i];
}
insert_sort(x);
for(int i=0;i<x;i++){
cout<<a[i]<<" ";
}
return 0;
}
3.sort並び替え:
配列は、機能の昇順に並べ替えることができます。
#include<bits/stdc++.h>
using namespace std;
int main(){
int x;
cin>>x;
int a[x];
for(int i=0;i<x;i++) cin>>a[i];
sort(a,a+x);
for(int i=0;i<x;i++) cout<<a[i]<<" ";
return 0;
}
ソート単純明快を注文。
咲いてください。