初学数据结构(包括修改过程)
/*直接插入排序(从小到大)*/
#include <stdio.h>
//#include <iostream> /*开始时下面定义变量时少写了 struct */
//using namespace std;
typedef int KeyType;
struct DataType
{
KeyType key;
};
void InsertSort(struct DataType a[],int n) /*这个类型是 struct DataType 不能少了 struct */
{
int i,j;
struct DataType temp;
for(i = 1; i < n; i++)
{
temp = a[i];
for(j = i; j > 0; j--)
{
if(temp.key < a[j-1].key)
{
a[j] = a[j-1];
}
else /*这个不能少*/
{
break;
}
}
a[j] = temp;
}
}
void main()
{
int i;
int n = 10;
struct DataType test[10] = {64,5,7,89,6,24,100,4,7,18};
InsertSort(test,n); /*注意这个的参数及参数传递*/
for(i = 0; i < n; i++)
{
printf(" %d ",test[i].key);
}
printf("\n");
}
下面是课本上的源程序:
#include <iostream>
using namespace std;
typedef int KeyType;
struct DataType
{
KeyType key;
};
void InsertSort(DataType a[],int n)
{
int i,j;
DataType temp;
for(i = 0; i < n-1; i++)
{
temp = a[i+1];
j = i;
while(j > -1 && temp.key <= a[j].key)
{
a[j+1] = a[j];
j--;
}
a[j+1] = temp;
}
}
void main(void)
{
DataType test[6] = {64,5,7,89,6,24};
int n = 6;
InsertSort(test,n);
for(int i = 0; i < n; i++)
cout << test[i].key << " ";
}