資料結構C語言版 表插入排序 靜態表

2022-09-01 12:00:13 字數 2164 閱讀 3263

資料結構c語言版 表插入排序.txt兩個人吵架,先說對不起的人,並不是認輸了,並不是原諒了。他只是比對方更珍惜這份感情。/* 

資料結構c語言版 表插入排序 

演算法10.3 p267-p270 

編譯環境:dev-c++ 4.9.9.2

*/#include 

#include 

// 靜態鍊錶型別 

#define size 100 // 靜態鍊錶容量 

typedef int keytype; // 定義關鍵字型別為整型 

typedef int infotype; // 定義其他資訊的型別 

typedef struct

redtype; // 記錄型別 

typedef struct

slnode; // 表結點型別 

typedef struct

slinklisttype; // 靜態鍊錶型別 

// 由陣列d建立n個元素的表插入排序的靜態鍊錶sl

void tableinsert(slinklisttype *sl,redtype d,int n)

}// 演算法10.18(l的型別有變) p290 

// adr給出靜態鍊錶l的有序次序,即l.r[adr[i]]是第i小的記錄。 

// 本演算法按adr重排l.r,使其有序。 

void rearrange(slinklisttype *l,int adr)

(*l).r[j]=(*l).r[0];

adr[j]=j;}}

void print(slinklisttype l)

#define n 8

int main()

,,,,

,,,};

slinklisttype l1,l2;

int *adr,i;

tableinsert(&l1,d,n);

l2=l1; // 複製靜態鍊錶l2與l1相同 

printf("排序前:\n");

print(l1);

arrange(&l1);

printf("l1排序後:\n");

print(l1);

adr=(int*)malloc((l2.length+1)*sizeof(int));

sort(l2,adr);

for(i=1;i<=l2.length;i++)

printf("adr[%d]=%d ",i,adr[i]);

printf("\n");

rearrange(&l2,adr);

printf("l2排序後:\n");

print(l2);

system("pause");

return 0; }/*

排序前:

key=49 ord=1 next=8

key=38 ord=2 next=1

key=65 ord=3 next=5

key=97 ord=4 next=0

key=76 ord=5 next=4

key=13 ord=6 next=7

key=27 ord=7 next=2

key=49 ord=8 next=3

l1排序後:

key=13 ord=6 next=6

key=27 ord=7 next=7

key=38 ord=2 next=7

key=49 ord=1 next=6

key=49 ord=8 next=8

key=65 ord=3 next=7

key=76 ord=5 next=8

key=97 ord=4 next=0

adr[1]=6 adr[2]=7 adr[3]=2 adr[4]=1 adr[5]=8 adr[6]=3 adr[7]=5 adr[8]=4

l2排序後:

key=13 ord=6 next=7

key=27 ord=7 next=2

key=38 ord=2 next=1

key=49 ord=1 next=8

key=49 ord=8 next=3

key=65 ord=3 next=5

key=76 ord=5 next=4

key=97 ord=4 next=0

請按任意鍵繼續. . .

*/ 

資料結構 C語言版 折半插入排序

折半插入排序是對直接插入排序的優化,折半插入排序所需附加儲存空間和直接插入排序相同,從時間上比較,折半插入排序僅減少了關鍵字間的比較次數,而記錄的移動次數不變。因此,折半插入排序的時間複雜度仍為o n2 直接插入排序可參考 此處以資料2的排序為例,用i從左到右遍歷到下標為5的位置,發現此處的值2小於...

資料結構(c語言版)排序1 插入排序

排序的概念 將乙個無序的序列排列成乙個有序的序列 按儲存介質可乙個分為 1.內部排序 資料量不大,資料在記憶體,無需內外存交換資料。2.外部排序 資料量較大,資料在外存,檔案排序 按比較器個數可分為 1.序列排序 單處理機 同時比較一對元素 2.並行排序 多處理機 同時比較多對元素 按主要操作可分為...

資料結構與演算法(C語言版) 插入排序

低階排序演算法 氣泡排序,選擇排序,插入排序 高階排序演算法 歸併排序,堆排序,快速排序 插入排序就是在已經排序的資料中從大往小比較,出現比該數小的就插入到該位置後面。include using namespace std void insertionsort int a,int n int mai...