Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.12 MB, 22 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
cout<<"Thoi gian chay cua chuong trinh la: "<<(float)(beg)CLOCKS_PER_SEC<<" s"<<" "\n;
#include <bits/stdc++.h>
#define fr(i, st, ed) for(int i = st; i <= ed; i++)#define fb(i, ed, st) for(int i = ed; i >= st; i--)#define ll long long
#define pii pair <int, int>
#define pll pair <long long, long long>#define fi first
#define se secondusing namespace std;
int n, a[100010] [, b100010] [, c100010] [, d100010] [, x100010], tmp[100010], tmp1[100010], y[100010], ord;
clock_t beg, en;int option () { n if( >10)return0;
cout<<"Ban co muon in ra cac buoc cua chuong trinh khong?"; cout<<" Y/N\n";
char mode; cin>> mode; mode if( =='Y')return1; return0;
}int order () {
cout<<"Chon thu tu sap xep ban muon thuc hien:\n"; cout<<"1. Be den lon\n";
cout<<"2. Lon den be\n"; modeint ;
cin>> mode; mode if( == 1)return1; return-1;
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">void insertion_sort (int mode) { cout<<"Insertion sort:\n"; beg =clock(); a[ ]0 =-1e9; fr i, , n ( 2 ) { pos i, val aint = = [ ]i while( [a pos] a pos < [ -1]) { a[pos] a pos = [ -1] a pos val[ -1]= ; pos--; }
mode if( == 1) { n if( <=10) {
cout<<"Step: "<< i -1<<" "\n; fr j, , n ( 1 )cout<< a ord [ ]j* <<" "; cout<<" "\n;
} }
else if i ( == n ) {
cout<<"Day so sau khi sap xep:\n"; fr j, , n ( 1 )cout<< a ord [ ]j * <<" "; cout<<" "\n;
} } en =clock();
cout<<"Thoi gian chay cua chuong trinh la: "<<(float)(beg)CLOCKS_PER_SEC<<" s"<<" "\n;
void selection_sort (int mode) { cout<<"Selection sort:\n"; beg =clock();
b[ ]0 =-1e9; fr i, , n ( 1 -1) { pos i, val bint = = [ ]i fr j, i, n ( ) { val bif( > [ ])j { val b= [ ]j pos j=; } }
swap ( [b pos], b[ ])i mode if( == 1) { n if( <=10) {
cout<<"Step: "<< << i " "\n; fr j, , n ( 1 )cout<< b ord [ ]j* <<" "; cout<<" "\n;
} }
else if i ( == n -1) {
cout<<"Day so sau khi sap xep:\n"; fr j, , n ( 1 )cout<< b ord [ ]j* <<" "; cout<<" "\n;
} } en =clock();
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">cout<<"Thoi gian chay cua chuong trinh la: "<<(float)(beg)CLOCKS_PER_SEC<<" s"<<" "\n;
void bubble_sort (int mode) { cout<<"Bubble_sort: "\n; beg =clock(); c[ ]0 =-1e9; bool ck; cnt int = ; while(true){ cnt++; fr i, , n ( 1 -1) {
if( [ ]c i c i > [+ ]) swap( [ ]c i, c i [+ ]); }
ck =true;
fr i, , n ( 1 -1)if( [ ]c i c i > [ + ]) { ck =false;
break; }
mode if( == n 1)if( <=10) { cout<<"Step: "<< cnt <<" "\n; fr i, , n ( 1 )cout<< c ord [ ]i * <<" "; cout<<" "\n;
}
ck if( ==true) { mode if( == 0) {
cout<<"Day so sau khi sap xep:\n"; fr i, , n ( 1 )cout<< c ord [ ]i* <<" "; cout<<" "\n;
} break; } } en =clock();
cout<<"Thoi gian chay cua chuong trinh la: "<<(float)(beg)CLOCKS_PER_SEC<<" s"<<" "\n;
d[pos] tmp= [pos2]; pos2++; } pos++; }
pos1 mid if( > ) { fr i, pos, r ( ) { d tmp[ ]i = [pos2]; pos2++; }
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">} else{ fr i, pos, r ( ) { d tmp[ ]i = [pos1]; pos1++; } }}
void merge_sort (int int int l, r, mode) { l if( == 1and r == n beg ) =clock(); r l if( <= 1) {
if( [ ]d l d> [ ])r swap( [ ]d r, d[ ])l mode if( == 1) {
cout<<"Doan sap xep tu "<< << l " den "<< << r " "\n; fr i, l, r ( )cout<< d ord [ ]i* <<" ";
cout<<" "\n; }
return; }
mid l r int =(+ ) 2; merge_sort l, mid, mode( ) merge_sort mid , r, mode( + ) Merge l, r( )
mode if( == 1) {
cout<<"Doan sap xep tu "<< << l " den "<< << r " "\n; fr i, l, r ( )cout<< d ord [ ]i* <<" ";
cout<<" "\n; }
mode if( == 0and l == 1and r == n ) { cout<<"Day so sau khi sap xep:\n"; fr i, l, r ( )cout<< d ord [ ]i* <<" "; cout<<" "\n;
}
l if( == 1and r == n ) { en =clock();
cout<<"Thoi gian chay cua chuong trinh la: "<<(float)(beg)CLOCKS_PER_SEC<<" s"<<" "\n;
}}
int part(int st, ed)int{
pivot yint = [ ]st; cnt int = ;
for(int i st i = + ; <= ed i;++) { if( [ ]y i<= pivot cnt) ++; }
pivotIndex st cntint = + ; swap( [y pivotIndex], y[ ])st ; i st, j edint = = ;
while i pivotIndex (< && j pivotIndex > ) { while( [ ]y i<= pivot ) {
i++;
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">}
while( [ ]y j pivot > ) { j--;
}
i pivotIndex if(< && j pivotIndex > ) { swap( [y i++], y[ ])j-- ;
} }
return pivotIndex;}
void quick_sort(int st, ed, mode)int int{
st if( >= ed )return;
st if( == 1and ed == n beg ) =clock(); p part st, edint = ( )
quick_sort st, p , mode( -1 ) quick_sort p , ed, mode( + ) mode if( == 1) {
cout<<"Doan sap xep tu "<< st <<" den "<< ed <<" "\n; fr i, st, ed ( )cout<< y ord [ ]i* <<" ";
cout<<" "\n; }
mode if( == 0and st == 1and ed == n ) { cout<<"Day so sau khi sap xep:\n"; fr i, st, ed ( )cout<< y ord [ ]i* <<" "; cout<<" "\n;
}
st if( == 1and ed == n ) { en =clock();
cout<<"Thoi gian chay cua chuong trinh la: "<<(float)(beg)CLOCKS_PER_SEC<<" s"<<" "\n;
}}void input () {
cout<<"\nVui long chon kieu nhap du lieu:\n"; cout<<"1. Nhap tu ban phim\n";
cout<<"2. Nhap tu file\n"; modeint ;
cin>> mode; mode if( == 1) {
cout<<"Nhap so phan tu cua mang: "; cin>> n;
cout<<"Nhap cac phan tu cua mang: "; fr i, , n ( 1 ) {
cin>> x[ ]i a x[ ]i= [ ]i b x[ ]i = [ ]i c x[ ]i= [ ]i d x[ ]i = [ ]i y x[ ]i = [ ]i } }
mode if( == 2) {
</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">cout<<"Nhap ten file :"; string s;
cin>> s; ifstream file_in( )s; n = ;
while file_in ( >> x[ ])n { a[ ]n x= [ ]n; b[ ]n x= [ ]n; c[ ]n x= [ ]n; d[ ]n x= [ ]n; y[ ]n x= [ ]n; n++; } n--; }}int main (){
cout<<"---CHUONG TRINH GIA LAP SAP XEP---\n"; cout<<"Chuong trinh bao gom cac kieu sap xep:\n"; cout<<"1. Insertion sort\n";
cout<<"2. Selection sort\n"; cout<<"3. Bubble sort\n"; cout<<"4. Merge sort\n"; cout<<"5. Quick sort\n"; cout<<"6. Nhap day moi\n";
cout<<"Bam 0 neu ban muon thoat chuong trinh.\n\n"; input();
mode, ynint ; while(true){
cout<<"Chon cach sap xep ban muon thuc hien:\n"; cin>> mode;
mode if( == 1) { ord order= (); fr i, , n a ord( 1 ) [ ]i* ; yn option= (); insertion_sort( )yn; fr i, , n a x( 1 ) [ ]i= [ ]i }
else mode if( == 2) { ord order= (); fr i, , n b ord( 1 ) [ ]i* ; yn option= (); selection_sort( )yn; fr i, , n b x( 1 ) [ ]i= [ ]i }
else mode if( == 3) { ord order= (); fr i, , n c ord( 1 ) [ ]i* ; yn option= (); bubble_sort( )yn; fr i, , n c x( 1 ) [ ]i= [ ]i }
else
</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">mode if( ==4){ ord order= (); fr i, , n d ord( 1 ) [ ]i* ; yn option= (); cout<<"Merge sort:\n"; merge_sort , n, yn(1 ) fr i, , n d x( 1 ) [ ]i= [ ]i }
else mode if( ==5){ ord order= (); fr i, , n y ord( 1 ) [ ]i* ; yn option= (); cout<<"Quick sort:\n"; quick_sort , n, yn(1 ) fr i, , n y x( 1 ) [ ]i= [ ]i }
else mode if( ==6){ input(); } else
mode if( == 0)break; cout<<"\n\n1. Insertion sort\n"; cout<<"2. Selection sort\n"; cout<<"3. Bubble sort\n"; cout<<"4. Merge sort\n"; cout<<"5. Quick sort\n"; cout<<"6. Nhap day moi\n";
cout<<"Bam 0 neu ban muon thoat chuong trinh.\n"; }
return0;}
</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">