資源簡介
大學課程、數據結構、C代碼、
以下問題要求統一在一個大程序里解決。
1折半插入排序
2冒泡排序
3快速排序
4簡單選擇排序
5歸并排序
6堆排序

代碼片段和文件信息
//?chazhao.cpp?:?Defines?the?entry?point?for?the?console?application.
//以下問題要求統一在一個大程序里解決。
//1折半插入排序//2冒泡排序//3快速排序
//4簡單選擇排序//5歸并排序//6堆排序
#include?“stdafx.h“
#include?“stdio.h“
#include?“malloc.h“
#include?“stdlib.h“
#define?MAX?6
#define?BOOL?int
#define?TRUE?1
#define?FALSE?0
typedef?struct{?????//結構體
int??key;
}BIAO;
typedef?struct{ //定義線性表的存儲形式
BIAO?r[MAX];
int?length;
int?listsize;
}SqList;
void?createlist(SqList*L) { //創建并初始化線性表
L->length?=?MAX-1; ////////////
L->listsize?=?MAX;
}
SqList?BiInsertionSort?(?SqList?L?)?{ //折半插入排序
int?lowhighmij;
for?(?i=2;?i<=L.length;?++i?)?{
L.r[0]?=?L.r[i];??????//?將?L.r[i]?暫存到?L.r[0]
low?=?1;???
high?=?i-1;
while?(low<=high)?{?
m?=?(low+high)/2;???????????//?折半
if?(L.r[0].key? high?=?m-1;???//?插入點在低半區
else??
low?=?m+1;?//?插入點在高半區
}
for?(?j=i-1;??j>=high+1;?--j?)
L.r[j+1]?=?L.r[j];??????//?記錄后移
L.r[high+1]?=?L.r[0];??//?插入
}?//?for
return?L;
}?//?BInsertSort
//2冒泡排序
SqList?BubbleSort(SqList?L)?
{?//R(l..n)是待排序的文件,采用自下向上掃描,對R做冒泡排序?
int?ij;?
bool?exchange?=?TRUE; ?//交換標志?
for(i=1?;i exchange=FALSE; ?//本趟排序開始前,交換標志應為假?
for(j=L.length-1?;j>=i?;j--) ?//對當前無序區R[i..n]自下向上掃描?
if(L.r[j+1].key? L.r[0]?=?L.r[j+1]; ?//R[0]不是哨兵,僅做暫存單元?
L.r[j+1]?=?L.r[j];?
L.r[j]?=?L.r[0];?
exchange=TRUE; //發生了交換,故將交換標志置為真?
}?
if(!exchange)?//本趟排序未發生交換,提前終止算法?
break;
}?//endfor
return?L;
}?//BubbleSort?
//3快速排序
void?QSort?(int?h[]??int?s??int??t?)?{ //?對記錄序列R[s..t]進行快速排序
if?(s? int?i?=?s?j?=?t;
h[0]?=?h[i];
while?(i while?(i=h[0])?{
j--;
}
h[i]?=?h[j];
while?(i i++;
}
h[j]?=?h[i];
}
h[i]?=?h[0];
QSort(h?s?i-1);
QSort(h?i+1?t);
}
}?//?QSort
void?QuickSort(int?h[]?)?{??????//?對順序表進行快速排序
QSort(h?1?5);
int?i;
printf(“快速排序后的序列為:“);
for(i=1?;i<6?;i++)
printf(“?%d“h[i]);
printf(“\n“);
}?//?QuickSort
//4簡單選擇排序?
int?SelectMinKey?(SqList?L?int?i)?{
int?jminp;
min?=?L.r[i].key;
p=i;
for(j=i+1?;j<6?;++j)?{
if(?min>L.r[j].key?)?{
min?=?L.r[j].key;
p?=?j;
}
}
return?p;
}
SqList?SelectSort?(SqList?L?int?n?)?{ //?對記錄序列R[1..n]作簡單選擇排序。
int?ij;
int?k;
for?(i=1;?i
j?=?SelectMinKey(L?i); //?在?R[i..n]?中選擇關鍵字最小的記錄
if?(i!=j)??{
k?=?L.r[i].key;
L.r[i].key?=?L.r[j].key;
L.r[j].key?=?k; //?與第?i?個記錄交換
}
}
return?L;
}?//?SelectSort
//6堆排序
void?HeapAdjust?(int?h[]?int?m?int?n) {??
int?temp?=?h[m];
int?mm?=?m;
int?j(0);
for?(?j=2*mm;?j<=n?;?j*=2?)?{?//?j?初值指向左孩子
if?(?j j++;?????
}
if?(?h[j]?<=?temp?)??{
break;?
}
h[mm]?=?h[j];???
mm?=?j;????
}
h[mm]?=?temp;??//?將調整前的堆頂記錄插入到?s?位置
}?//?HeapAdjust
vo
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????7216??2014-06-17?15:34??8排序(6個方法)\chazhao.cpp
?????文件???????3413??2014-06-17?16:16??8排序(6個方法)\chazhao.dsp
?????文件????????522??2014-06-17?16:18??8排序(6個方法)\chazhao.dsw
?????文件??????50176??2014-06-17?16:18??8排序(6個方法)\chazhao.ncb
?????文件??????48640??2014-06-17?16:18??8排序(6個方法)\chazhao.opt
?????文件????????248??2014-06-17?16:17??8排序(6個方法)\chazhao.plg
?????文件?????188482??2014-06-17?16:16??8排序(6個方法)\Debug\chazhao.exe
?????文件?????243188??2014-06-17?16:16??8排序(6個方法)\Debug\chazhao.ilk
?????文件??????19610??2014-06-17?16:16??8排序(6個方法)\Debug\chazhao.obj
?????文件?????222980??2014-06-17?15:31??8排序(6個方法)\Debug\chazhao.pch
?????文件?????459776??2014-06-17?16:16??8排序(6個方法)\Debug\chazhao.pdb
?????文件???????1764??2014-06-06?15:40??8排序(6個方法)\Debug\StdAfx.obj
?????文件??????41984??2014-06-17?16:18??8排序(6個方法)\Debug\vc60.idb
?????文件??????53248??2014-06-17?16:16??8排序(6個方法)\Debug\vc60.pdb
?????文件???????1214??2014-06-06?14:40??8排序(6個方法)\ReadMe.txt
?????文件????????294??2014-06-06?14:40??8排序(6個方法)\StdAfx.cpp
?????文件????????667??2014-06-06?14:40??8排序(6個方法)\StdAfx.h
?????目錄??????????0??2012-07-02?19:24??8排序(6個方法)\Debug
?????目錄??????????0??2012-07-02?19:24??8排序(6個方法)
-----------?---------??----------?-----??----
??????????????1343422????????????????????19
- 上一篇:labview登陸注冊
- 下一篇:labview寫的貪吃蛇游戲
評論
共有 條評論