#include<stdio.h>
#include<string.h>
int main()
{
int nums1[10] = { 0,8,6,3,9,7,5,4,2,1 };
int i, j;
printf(">>简单选择排序: ");
int max, temp;
for (i = 1; i <= 8; i++)
{
max = i;
for (j = i + 1; j <= 9; j++) {
if (nums1[max] < nums1[j]) {
max = j;
}
}
if (i != max) {
temp = nums1[max];
nums1[max] = nums1[i];
nums1[i] = temp;
}
}
for (i = 1; i <= 9; i++) {
printf("%d ", nums1[i]);
}
int nums2[10] = { 0,8,6,3,9,7,5,4,2,1 };
printf("\n>>堆排序:");
void HeapAdjust(int* nums2, int a, int b);
void Swap(int* nums2, int a, int b);
int Length = 9;
for (i = Length / 2; i >= 1; i--) {
HeapAdjust(nums2, i, Length );
}
for (i = Length; i > 1; i--) {
Swap(nums2, i, 1);
HeapAdjust(nums2, 1, i - 1);
}
for (i = 1; i <= 9; i++) {
printf("%d ", nums1[i]);
}
}
void Swap(int* nums2, int a, int b)
{
int temp;
temp = nums2[a];
nums2[a] = nums2[b];
nums2[b] = temp;
}
void HeapAdjust(int* nums2, int a, int b)
{
int j;
int temp = nums2[a];
for (j = a * 2; j <= b; j *= 2) {
if (j < b && nums2[j] < nums2[j + 1])
j = j + 1;
if (nums2[j] <= temp)
break;
nums2[a] = nums2[j];
a = j;
}
nums2[a] = temp;
}