Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void siftdown(int *array, int top, int bot) {
- int max, value =0;
- while ((top * 2 <= bot) && value < 1){
- if(top * 2 == bot){
- max = top * 2;
- } else if (array[top * 2] > array[top * 2 + 1]){
- max = top * 2;
- } else {
- max = top * 2 + 1;
- }
- if (array[top] < array[max]){
- int x = array[top];
- array[top] = array[max];
- array[max] = x;
- top = max;
- } else {
- value = 1;
- }
- }
- }
- void sort(int *array, int size){
- for (int i = (size / 2) - 1; i >= 0; i--){
- siftdown(array, i, size - 1);
- }
- for (int i = size - 1; i >= 1; i--)
- {
- int x = array[0];
- array[0] = array[i];
- array[i] = x;
- siftdown(array, 0, i - 1);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement