排序总结+全排列

来源:互联网 发布:苹果电脑做淘宝方便吗? 编辑:程序博客网 时间:2024/05/01 20:35
void perm(int* num, int i) {int j, k, tmp;    if(i < size) {        for(j = i; j < size; j++) {            tmp = num[j];            for(k = j; k > i; k--)                num[k] = num[k-1];            num[i] = tmp;            perm(num, i+1);            for(k = i; k < j; k++)                num[k] = num[k+1];            num[j] = tmp;        }    }    else {         for(j = 0; j < size; j++)            per[n][j]=num[j]+'A';        per[n][j]='\0';        n++;    }}//冒泡排序:void BubbleSort() {for(int i=0;i<n - 1 ;i++) { int flag = 0;for(int j=n-1;j > i;j--) {if(data[j] < data[j-1] ) {swap(data[j-1],data[j]);flag = 1;}}if (flag == 0)break;}}//选择排序:void SelectSort() {for (int i=0;i<n-1;i++) {int m=i;for (int j=i+1;j<n;j++) {if (data[j]<data[m])m=j;}if (i!=m)swap(data[i],data[m]);}}//插入排序:void InsertSort() {int count = data.Length;for (int i = 1 ; i < count ; i++) {double t = data[i];int j = i;while (j > 0 && data[j - 1] > t) {data[j] = data[--j];}data[j] = t;}}//快速排序:void ksort(int l, int h){ int e = h;int p = l;if (h < l + 2) return;while (l < h) { while (++l < e && a[l]<=a[p]); while (--h > p && a[h]>=a[p]); if (l < h) {swap(a[l],a[h]);} }swap(a[h],a[p]);ksort(p, h); ksort(l, e);}//希尔排序:void ShellSort() {int gap = 0;while (gap<=n) {gap = gap * 3 + 1;    }     while (gap > 0) {        for ( int i = gap; i < n; i++ ) {            int j = i - gap;            int temp = a[i];                         while (( j >= 0 ) && ( a[j] > temp )) {                a[j + gap] = a[j];                j = j - gap;            }            a[j + gap] = temp;        }        gap = ( gap - 1 ) / 3;    }    }//堆排序int heapSize, length;int A[100];void max_heapify(int i) {int l = i*2;int r = i*2+1;int largest;if (l<=heapSize && A[l]>A[i])largest = l;elselargest = i;if (r<=heapSize && A[r]>A[largest])largest = r;if (largest!=i) {swap(A[i],A[largest]);max_heapify(largest);}}void build_heap() {int i;heapSize = length;for (i=length/2;i>=1;i--)max_heapify(i);}void heapSort() {int i;build_heap();for (i=length; i >=2; i--) {swap(A[1],A[i]);heapSize--;max_heapify(1);}}

原创粉丝点击