ヒープソートの宿題がでました。
どういう順番でソートしていくのかは色々なサイトを見て理解したのですが、
それを式にするのができなく、2.3日悩んでおります;;
整数{45,3,35,40,18,50,18,1,11,2,15,9,5,30,25}の15こをヒープソートで
並べ替えるというものです。
検索をかけてみると、まだ私の知らない関数?が沢山出てきまして、
使えるのはfor、if、elseくらいなのですが、
長くなっても構わないので、初心者な式で教えていただけないでしょうか・・・。
よろしくお願いします!
Microsoft Visual C++ 2005 Express Editionを使っております。
#include "stdafx.h" int _tmain(int argc, _TCHAR* argv[/url]) { int i,j,k,n,w; int a[15]={ 8, 1, 10, 15, 45, 3, 35, 19, 46, 7, 40, 18, 50, 11, 2 }; for( i = n/2; i >= 1; i--) { j = i; while( 1 ) { if( 2*j > n ){ break ;} if( 2*j == n ) { if ( a[j] < a[2*j] ) { w = a[j]; a[j] = a[2*j]; a[2*j] = w; } break; } else { if( a[2*j] < a[2*j+1] ) { k = 2*j+1; } else{ k = 2*j; } if( a[j] > a[k] ) { w = a[j]; a[j] = a[k]; a[k] =w; j = k; } } } } for( i = 1; i<= n; i++) { printf("%d ", a); } return ; }