shell排序

    技术2022-05-19  25

    #include<iostream.h> void swap( int &x, int &y ) { int temp; temp = x; x = y; y = temp; } void shellSort( int *a, int gap, int size ) { int i = 0; int j = 0; while( gap > 0 ) { //从第gap个元素开始做交换操作 //i 是从第gap位开始。和前面第i - gap位比较 for( i = gap; i < size; i++ ) { if( a[i] < a[i-gap]) //和在他前面gap位的元素比较, { 找到第i个元素应该插入的位置 for( int j = i - gap; ( j > 0&&a[i] < a[j] ); j -= gap ) { swap(a[i],a[j]); } } } gap /=2; } } int main() { int a[] = {49,38,65,97,76,13,27,49,55,4}; for( int i = 1; i < 10; i++ ) { cout << a[i] << endl; } shellSort( a, 5, 10 ); cout << "after sort:" << endl; for( i = 1; i < 10; i++ ) { cout << a[i] << endl; } }


    最新回复(0)