代码如下:
#include <stdio.h>
#define DATA_ARRAY_SIZE 10
typedef int DataType;
void Swap(DataType *a, DataType *b)
{
DataType temp = *a;
*a = *b;
*b = temp;
}
void DisplayArray(DataType data[], int size)
{
for(int i=0; i<size; i++) {
printf("%d ", data[i]);
}
printf("\n");
return;
}
/* 简单交换排序 */
void SimpleSort(DataType src[], const int size);
/* 冒泡排序 */
void PopSort(DataType src[], const int size);
/* 冒泡排序优化 */
void BetterPopSort(DataType src[], const int size);
int main()
{
DataType srcData1[DATA_ARRAY_SIZE] = {
3,2,4,6,9,1,21,43,29,59};
DataType srcData2[DATA_ARRAY_SIZE] = {
3,2,4,6,9,1,21,43,29,59};
DataType srcData3[DATA_ARRAY_SIZE] = {
3,2,4,6,9,1,21,43,29,59};
SimpleSort(srcData1, DATA_ARRAY_SIZE);
PopSort(srcData2, DATA_ARRAY_SIZE);
BetterPopSort(srcData3, DATA_ARRAY_SIZE);
DisplayArray(srcData1, DATA_ARRAY_SIZE);
DisplayArray(srcData2, DATA_ARRAY_SIZE);
DisplayArray(srcData3, DATA_ARRAY_SIZE);
return 0;
}
void SimpleSort(DataType src[], const int size)
{
if(size <= 1) {
perror("size error.");
return;
}
for(int i=0; i<size -1; i++) {
for(int j=i+1; j<size; j++) {
if(src[i] < src[j]) {
Swap(&src[j], &src[i]);
}
}
}
return;
}
void PopSort(DataType src[], const int size)
{
if(size <= 1) {
perror("size error.");
return;
}
for(int i=0; i<size -1; i++) {
for(int j=0; j<size - i -1; j++) {
if(src[j] < src[j+1]) {
Swap(&src[j], &src[j+1]);
}
}
}
return;
}
void BetterPopSort(DataType src[], const int size)
{
if(size <= 1) {
perror("size error.");
return;
}
int flag = 1;
for(int i=0; i<size -1 && flag; i++) {
flag = 0;
for(int j=0; j<size-i-1; j++){
if(src[j] < src[j+1]) {
flag = 1;
Swap(&src[j], &src[j+1]);
}
}
}
return;
}