先表态一下, 我不是学资工的, 因为我从小就在摸这些些东西
所以我还颇能够了解为什么有那么多资工系的人会反弹
==== 我是分隔线, 以下是重点 ===
其实补充一点有许多人没有讲到的重点
有人说你会写字, 但并不代表你会写诗
这个其实还蛮中肯的, 因为资工有教优化
以下两个都是做同样的效果, 都是将数字顺序依序排好
但是后者个效率远比前者大, 这就是所谓算法带来的优化
这是资工一生中最追求的东西
// ===============前置准备动作================
// 产生大量的乱数
int a[60000];
for (int i=0, i<60000, i++)
{
a[i]=rand()%60000;
}
// ============版本1-俗称SelectionSort===============
void SelectionSort(int a[], int array_size)
{
int i;
for (i = 0; i < array_size - 1; ++i)
{
int j, min, temp;
min = i;
for (j = i+1; j < array_size; ++j)
{
if (a[j] < a[min])
min = j;
}
temp = a[i];
a[i] = a[min];
a[min] = temp;
}
}
// 使用方法: SelectionSort(a, 60000);
// ============版本2-俗称HeapSort===============
void makeheap ( int x[ ], int n )
{
int i, val, s, f ;
for ( i = 1 ; i < n ; i++ )
{
val = x[i] ;
s = i ;
f = ( s - 1 ) / 2 ;
while ( s > 0 && x[f] < val )
{
x[s] = x[f] ;
s = f ;
f = ( s - 1 ) / 2 ;
}
x[s] = val ;
}
}
void heapsort ( int x[ ], int n )
{
int i, s, f, ivalue ;
for ( i = n - 1 ; i > 0 ; i