Bài Toán Sắp Xếp Chèn Mã: #include<conio.h> #include<iostream.h> int ds [100] ; int n,x; void taods (int a[], int&n) { int i; for(i=0;i<n;i++) { printf("a[%d]=",i); scanf("%d",&a[i]); } } void xuatds (int a[],int n) { int i; for (i=0;i<n;i++) printf("%3d",a[i]); } void sx_ds(int a[],int n) { int j; for (int i=1;i<n;i++) {int x=a[i]; j=i-1; while ((x<a[j])&&(j>=0)) { a[j+1]=a[j]; j--; } a[j+1]=x; getch(); printf("\n luot %d\n",i); printf("\t i=%d\n",i); printf("\t i=%d\n",j); printf("\t x%d\n",x); xuatds(ds,n); } return; } void main() { int n; clrscr(); printf("nhap n=");scanf("%d",&n); taods(ds,n); printf("danh sach vua tao : \n"); xuatds(ds,n); sx_ds(ds,n); printf("\n danh sach vua sap xep : \n"); xuatds(ds,n); getch(); } Bài Toán Nổi Bọt Mã: #include<stdio.h> #include<conio.h> #include<iostream.h> int ds [100] ; int n,x; void taods (int a[] , int&n) { int i; for(i=0;i<n;i++) { printf("a[%d]=",i); scanf("%d",&a[i]); } } void xuatds (int a[],int n) { int i; for (i=0;i<n;i++) printf("%3d",a[i]); } void swap (int *c ,int *d) { int a; a=*c; *c=*d; *d=a; return; } void sx_ds(int a[],int n) { int j; for (int i=0;i<=n-1;i++) { for(int j=n-1;j>=i+1;j--) if(a[j]<a[j-1]) swap(&a[j],&a[j-1]); getch(); printf("\n lan %d\n",i); printf("\t i=%d\n",i); printf("\t j=%d\n",j); printf("\n x=%d\n",x); xuatds(ds,n); } return; } void main() { int n; clrscr(); printf("nhap n=");scanf("%d",&n); taods(ds,n); printf("danh sach vua tao : \n"); xuatds(ds,n); sx_ds(ds,n); printf("\n danh sach vua sap xep : \n"); xuatds(ds,n); getch(); } Bài Toán Sắp Xếp Nhanh Mã: #include<stdio.h> #include<conio.h> #include<iostream.h> int ds [100] ; int n,x; void taods (int a[] , int&n) { int i; for(i=0;i<n;i++) { printf("a[%d]=",i); scanf("%d",&a[i]); } } void xuatds (int a[],int n) { int i; for (i=0;i<n;i++) printf("%3d",a[i]); } void swap (int *c ,int *d) { int a; a=*c; *c=*d; *d=a; return; } void quick_sort(int a[],int left,int right) { if(left<right) {int i=left;int j=right ; int x=a[(left+right)/2]; do{while(a[i]<x) i++; while(a[j]>x)j--; if(i<=j){swap(&a[i],&a[j]);i++;j--;} }while(i<=j); quick_sort(a,left,j); quick_sort(a,i,right); } } void main() { int n; clrscr(); printf("nhap n=");scanf("%d",&n); taods(ds,n); printf("danh sach vua tao : \n"); xuatds(ds,n); quick_sort(ds,0,n-1); printf("\n danh sach vua sap xep : \n"); xuatds(ds,n); getch(); } Đang cập nhật......
Ừ!không chỉ mình mà mình mong muốn tất cả mọi người nếu ai làm được thì nên post lên diễn đàn(có thể trong topic này) để những người chưa làm được lấy đó tham khảo thêm.
Update thêm Bài CTDL Sắp Xếp Quick_Sort Đã Chia Dc 2 Đoạn Trái Và Phải. Nhưng Chưa Có Đoạn Giữa. Ai Đã Hoàn THành thì Tiếp Tục Up Mã: #include<conio.h> #include<stdio.h> #include<string.h> int ds[50]; int n,d=0; void taods(int a[],int&n) { int i; for(i=1;i<=n;i++) { printf("a[%d]=" ,i);scanf("%d",&a[i]); } } void xuatds(int a[],int n) { int i; for(i=1;i<=n;i++) printf("%3d ",a[i]); } void swap(int *c,int *d) { int a; a=*c; *c=*d; *d=a; return; } /* void noibot(int ds[],int n) { for(int i=1;i<=n-1;i++) { for(int j=n;j>=i+1;j--) if(ds[j]<ds[j-1]) swap(&ds[j],&ds[j-1]); getch(); printf("\nLan %d:\n",i); xuatds(ds,n); } return; } */ void sxnhanh(int ds[],int left, int right) { if(left<right) { int i=left;int j=right;int x=ds[(left+right)/2]; do { while(ds[i]<x) i++; while(ds[j]>x) j--; if(i<=j) { swap(&ds[i],&ds[j]); i++; j--; } }while(i<=j); d++; printf("\nLuot %d\n",d); printf("\n Doan 1: "); for(int i1=left;i1<=j;i1++) {printf("%d ",ds[i1]);} if((j<((left+right)/2)&&i>((left+right)/2))) printf("\n Doan G:"); printf("%d",ds[j+1]); printf("\n Doan 2: "); for(int i2=i;i2<=right;i2++) {printf("%d ",ds[i2]);} sxnhanh(ds,left,j); sxnhanh(ds,i,right); } } void main() { clrscr(); printf("\n nhap n:");scanf("%d",&n); taods(ds,n); printf("\n danh sach vua tao:"); xuatds(ds,n); sxnhanh(ds,1,n); printf("\n Xuat DS: \n"); xuatds(ds,n); getch(); }