c语言内部测试,C语言常用内部排序的实现 – 真水无香 – 51Testing软件测试 51Testing软件测试 -软件测试人的精神家园…

// 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进行处理,非常感谢!

上一篇 2021年4月14日
下一篇 2021年4月14日

相关推荐