排序演算法的實現

2021-06-04 23:13:27 字數 2704 閱讀 2660

1.插入排序

演算法導論p3

/*

* insertsort.cpp

* * created on: 2012-7-9

* author: sangerhoo

*/#include using namespace std;

void insertsort(int *array,int n)

*(array+i+1)=key; }}

void arrayprint(int *array,int n)

int partion(int *array, int p, int r)

} swap(array + i, array + r);

return i;

}void quicksort(int *array, int p, int r)

}void arrayprint(int *array,int n)

cout << endl;

}int main()

; int length = sizeof(array) / sizeof(int);

cout << "排序前" << endl;

arrayprint(array, length);

quicksort(array, 0, length - 1);

cout << "排序後" << endl;

arrayprint(array, length);

return 0;

}

3.氣泡排序

/*

* bubblesort.c

* * created on: 2012-3-16

* author: sangerhoo

*/#include#includevoid bubblesort(int *arry,int n)

} }}void main()

; int i;

printf("排序前\n");

for(i=0;i<8;i++)

printf("\n");

bubblesort(arry,8);

printf("排序後\n");

for(i=0;i<8;i++)

printf("\n");

}

4.選擇排序

/*

* selectsort.c

* * created on: 2012-3-17

* author: sangerhoo

*/#include#includevoid selectsort(int *array,int n)

*(array+j)=tmp; }}

void main()

; int i;

int n= sizeof(array)/sizeof(int);

printf("n=%d",n);

printf("派尋前\n");

for(i=0;i6.shell排序

/*

* shellsort.c

* * created on: 2012-3-17

* author: sangerhoo

*/#include#includevoid shellinsert(int *array, int step, int n) }}

void shellsort(int *array, int n) while (addtion > 1);

}void main() ;

int i;

int n = sizeof(array) / sizeof(int);

printf("n=%d", n);

printf("派尋前\n");

for (i = 0; i < n; i++)

printf("\n");

shellsort(array, n);

/*shellinsert(array,3, n);*/

printf("派尋後\n");

printf("n=%d\n", n);

for (i = 0; i < n; i++)

printf("\n");

}

7.堆排序

/* * heapsort.c

* * created on: 2012-3-17

* author: sangerhoo

*/#include#includeint count =1;

void restore(int *array,int i,int n)

else

}*(array+j/2)=r;

}void heapsort(int *array,int n)

}void main()

;//array[0]不起作用

int i;

int n= sizeof(array)/sizeof(int);

printf("n=%d",n);

printf("派尋前\n");

for(i=1;i#includevoid merger(int *array,int l,int m,int r)

else

if(j>=na)

if(k>=nb)

}while(j

排序演算法的實現

1 直接插入排序 把後面未排序部分的首個數插入到前面已排序部分的正確位置上去,直到全部排好順序。直接插入排序是穩定的,演算法時間複雜度o n 2 2 shell排序 將要排序的一組數按某個增量g分成若干組,每組中記錄的下標相差g。對每組中全部元素進行直接插入排序,然後縮小增量g,在每組中再進行排序。...

排序演算法 選擇排序演算法實現

1 時間複雜度 o n 2 2 選擇排序主要操作是交換和比較 交換次數在0 n 1 總比較次數 n n 1 n 2 n 3 1 n n 1 2 因為交換需要的cpu時間 比較需要的cpu時間 當n比較少時,選擇比冒泡快,減少了不必要的交換,每次交換僅僅是最大值或者最小值與序列起始位置進行狡猾。3 演...

排序演算法 歸併排序演算法的實現

1 時間複雜度 最優情況 o n 最壞情況 o nlogn 將待排序的序列分成若干子串行,並且每個子串行是有序的,再將每個子串行兩兩進行排序,合併,最終整體有序。2 演算法步驟 1 先將序列拆分成兩個子串行 2 將兩個子串行之間進行排序,合成乙個 3 重複 1 2 過程,進行遞迴,直至每個序列個數為...