// sort.cpp : Defines the entry point for the console application.
//
#include “stdafx.h”
#include “windows.h” // SYSTEMTIME
#include “stdlib.h” // system调用
#define SIZE 9
typedef struct
{
int key;
char name[10];
}Data;
// 0 数据不参与排序,只用作监督哨或者临时变量
Data ListOld[] = {{0, “零 ”}, {49, “一 ”}, {38, “二 ”}, {65, “三 ”}, {97, “四 ”}, {76, “五 ”}, {13, “六 ”}, {27, “七 ”}, {49, “八 ”}};
Data ListNew[SIZE];
void PrintData(Data *pData, int n);
void CopyList(Data *pNew, Data *pOld, int n);
void InsertSort(Data *pData, int n);
void QuickSort(Data *pData, int n);
void BubbleSort(Data *pData, int n);
void SelectSort(Data *pData, int n);
int main(int argc, char* argv[])
{
int i;
SYSTEMTIME sys;
do
{
system(“cls”);
printf(“ttC语言数据内部排序!nnt输入对应数字,选择排序方法:n”);
printf(“t1、插入排序tt2、快速排序n”);
printf(“t3、冒泡排序tt4、选择排序n”);
printf(“t0、退出n”);
scanf(“%d”, &i);
switch( i )
{
case 1:
GetLocalTime(&sys); // 记录排序开始时间
printf(“%4d/%02d/%02d %02d:%02d:%02d.%03d 星期%1dn” ,sys.wYear,sys.wMonth,
sys.wDay,sys.wHour,sys.wMinute,sys.wSecond,sys.wMilliseconds,sys.wDayOfWeek);
InsertSort(ListOld, SIZE);
break;
case 2:
QuickSort(ListOld, SIZE);
break;
case 3:
BubbleSort(ListOld, SIZE);
break;
case 4:
SelectSort(ListOld, SIZE);
break;
default:
break;
}
system(“pause”);
}while(i != 0);
return 0;
}
void PrintData(Data *pData, int n)
{
int i;
for(i=1; i
{
printf(“%d,%s “, pData[i].key, pData[i].name);
}
printf(“n”);
}
void CopyList(Data *pNew, Data *pOld, int n)
{
for(int i=1; i
{
pNew[i] = pOld[i];
}
}
// 插入排序
void InsertSort(Data *pData, int n)
{
int i, j;
CopyList(ListNew, pData, n);
for(i=2; i
{
if(ListNew[i].key
{
ListNew[0] = ListNew[i];
for(j=i-1; ListNew[0].key
{
ListNew[j+1] = ListNew[j];
}
ListNew[j+1] = ListNew[0];
}
}
printf(“InsertSortn”);
PrintData(ListOld, SIZE);
PrintData(ListNew, SIZE);
}
// 快速排序
int Partition(Data *pData, int low, int high)
{
int pivotkey = pData[low].key;
pData[0] = pData[low];
while(low
{
while(low=pivotkey)
high–;
pData[low] = pData[high];
while(low
low++;
pData[high] = pData[low];
}
pData[low] = pData[0];
return low;
}
void QSort(Data *pData, int low, int high)
{
int pivotloc;
if(low
{
pivotloc = Partition(pData, low, high);
QSort(pData, low, pivotloc-1);
QSort(pData, pivotloc+1, high);
}
}
void QuickSort(Data *pData, int n)
{
CopyList(ListNew, pData, n);
QSort(ListNew, 1, n-1);
printf(“QuickSortn”);
PrintData(ListOld, SIZE);
PrintData(ListNew, SIZE);
}
//冒泡排序
void BubbleSort(Data *pData, int n)
{
int i, j, isExchanged;
CopyList(ListNew, pData, n);
for(i=1; i
{
isExchanged = 0;
for(j=1; j
{
if(ListNew[j].key > ListNew[j+1].key)
{
ListNew[0] = ListNew[j];
ListNew[j] = ListNew[j+1];
ListNew[j+1] = ListNew[0];
isExchanged = 1;
}
}
if( !isExchanged )
break;
}
printf(“BubbleSortn”);
PrintData(ListOld, SIZE);
PrintData(ListNew, SIZE);
}
// 选择排序
void SelectSort(Data *pData, int n)
{
int i, j, index;
CopyList(ListNew, pData, n);
for(i=1; i
{
index = i;
for(j=i+1; j
{
if(ListNew[j].key
{
index = j;
}
}
if(index != i)
{
ListNew[0] = ListNew[i];
ListNew[i] = ListNew[index];
ListNew[index] = ListNew[0];
}
}
printf(“SelectSortn”);
PrintData(ListOld, SIZE);
PrintData(ListNew, SIZE);
}
文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树首页概览114847 人正在系统学习中 相关资源:哨兵软件测试SAS/SATA硬盘软件_hbasas-Web服务器工具类资源-CSDN…
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!