C言語でヒープソートを書く
code:c
#include <stdio.h>
#define LENGTH 7
void heapify(int *ar, int n, int i) {
while (true) {
int largest = i;
int left = i*2 + 1;
int right = i*2 + 2;
if (left < n && arleft > arlargest) largest = left;
if (right < n && arright > arlargest) largest = right;
if (largest != i) {
int tmp = arlargest;
arlargest = ari;
ari = tmp;
i = largest;
continue;
}
break;
}
}
int main() {
int n = LENGTH;
int vecLENGTH = { 3,1,4,1,5,9,2 };
for (int i = n/2 - 1; i >= 0; --i) {
heapify(vec, n, i);
}
for (int i = n-1; i >= 0; --i) {
heapify(vec, i, 0);
int tmp = veci;
veci = vec0;
vec0 = tmp;
}
char s1024;
for (int i = 0; i < n; ++i) {
si+1 = '\0'; // scary
snprintf(s, sizeof s, "%d", veci);
puts(s);
}
return 0;
}