推荐一个网站给大家,知乎上看到的,亲测好用
http://www.comp.nus.edu.sg/~stevenha/visualization/index.html
1.冒泡排序
#include<iostream> using namespace std; int a[10]={10,9,8,7,6,5,4,3,2,1}; int main() { int len=sizeof(a)/sizeof(int),num2=0,temp; for(int i=0;i<len;i++) cout<<a[i]<<' '; cout<<endl; for(int i=0;i<len;i++) for(int j=i+1;j<len;j++) { if(a[i]>a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; num2++; } } for(int i=0;i<len;i++) cout<<a[i]<<' '; cout<<endl; cout<<len*num2<<endl; system("pause"); return 0; }
2.选择排序
#include<iostream> using namespace std; int a[10]={10,9,8,7,6,5,4,3,2,1}; int main() { int len=sizeof(a)/sizeof(int); for(int i=0;i<len;i++) cout<<a[i]<<' '; cout<<endl; for(int i=0;i<len;i++) { int min=a[i],index=i; for(int j=i+1;j<len;j++) if(min>a[j]) { min=a[j]; index=j; } int temp=a[index]; a[index]=a[i]; a[i]=temp; } for(int i=0;i<len;i++) cout<<a[i]<<' '; cout<<endl; system("pause"); return 0; }
3.插入排序
#include<iostream> using namespace std; int a[10]={10,9,8,7,6,5,4,3,2,1}; void insert(int i,int j,int *a)//j>i,a[j]为要插入的元素 { int temp=a[j]; for(int k=j;k>i;k--) a[k]=a[k-1]; a[i]=temp; } int main() { int len=sizeof(a)/sizeof(int),sorted_index=1; for(int i=0;i<len;i++) cout<<a[i]<<' '; cout<<endl; for(int i=0;i<len-1;i++) { for(int j=0;j<sorted_index;j++) { if(a[j]<=a[i+1]) continue; else insert(j,i+1,a); } for(int k=0;k<len;k++) cout<<a[k]<<' '; cout<<endl; sorted_index++; } system("pause"); return 0; }
4.快速排序
//快速排序 void quick_sort(int s[], int l, int r) { if (l < r) { //Swap(s[l], s[(l + r) / 2]); //将中间的这个数和第一个数交换 参见注1 int i = l, j = r, x = s[l]; while (i < j) { while(i < j && s[j] >= x) // 从右向左找第一个小于x的数 j--; if(i < j) s[i++] = s[j]; while(i < j && s[i] < x) // 从左向右找第一个大于等于x的数 i++; if(i < j) s[j--] = s[i]; } s[i] = x; quick_sort(s, l, i - 1); // 递归调用 quick_sort(s, i + 1, r); } }