voidsort(vector<int>& a){int n = a.size(), temp;for(int i =0; i < n; i++){for(int j = i; j < n; j++){if(a[i]> a[j]){
temp = a[i];
a[i]= a[j];
a[j]= temp;}}}}
快速排序
voidsort(vector<int>& a,int i,int j){if(i >= j)return;else{int k = a[i], x = i, y = j;while(x < y){while(a[y]> k && x < y) y--;
a[x]= a[y];while(a[x]< k && x < y) x++;
a[y]= a[x];}
a[x]= k;sort(a, i, x -1);sort(a, x +1, j);}}
选择排序
voidsort(vector<int>& a){int n = a.size(), temp, min;for(int i =0; i < n -1; i++){
min = i;for(int j = i +1; j < n; j++){if(a[j]< a[min]) min = j;}
temp = a[i];
a[i]= a[min];
a[min]= temp;}}
插入排序
voidsort(vector<int>& a){int n = a.size(), temp;for(int i =1; i < n; i++){for(int j = i; j >0; j--){if(a[j]< a[j -1]){
temp = a[j];
a[j]= a[j -1];
a[j -1]= temp;}elsebreak;}}}
voidsort(vector<int>& a){int n = a.size(), temp;for(int i = n /2; i >=1; i /=2){//增量for(int j =0; j < i; j++){//每一增量对应的所需循环次数for(int k = i + j; k < n; k += i){for(int l = k; l > j; l -= i){if(a[l]< a[l - i]){
temp = a[l];
a[l]= a[l - i];
a[l - i]= temp;}elsebreak;}}}}}
堆排序
voidadjustheap(vector<int>& a,int node,int len)//调节堆{int index = node, temp;int child =2* index +1;while(child < len){if(child +1< len && a[child]< a[child +1]){
child++;}if(a[index]>= a[child])break;
temp = a[index];
a[index]= a[child];
a[child]= temp;
index = child;
child =2* index +1;}}voidmakeheap(vector<int>& a)//建堆{for(int i = a.size()/2; i >=0; i--){adjustheap(a, i, a.size());}}voidsort(vector<int>& a){makeheap(a);int temp;for(int i = a.size()-1; i >=0; i--){//排序
temp = a[i];
a[i]= a[0];
a[0]= temp;adjustheap(a,0, i);}}