對順序錶用c語言實現直接插入排序、折半插入排序、希爾排序、快速排序、選擇排序、冒泡優化排序、堆排序,**如下:
#include
#include
#include
#include
#include
#include
#define maxsize 100
typedef int redtype;
typedef struct sqlist
sqlist;
sqlist l;
void time() //獲得系統時間
;time_t t;
struct tm *tp;
t=time(null);
tp=localtime(&t);
printf("/t ─────────────────────/n");
printf("/t/t 現在是:%d年%d月%d日",tp->tm_year+1900,tp->tm_mon+1,tp->tm_mday);
printf(" %d:%d:%d ",tp->tm_hour,tp->tm_min,tp->tm_sec,tp->tm_wday);
printf("星期%s/n",week[(tp->tm_wday)-1]);
}void print(sqlist *l) //列印排序結果
void stinsort(sqlist *l) //直接插入排序
l->int[j+1]=l->int[0];}}
void bis_int(sqlist *l) //折半插入排序
for(j=i-1;j>=high+1;--j)
l->int[j+1]=l->int[j];
l->int[high+1]=l->int[0];}}
void shell(sqlist *l) //希爾排序
l->int[j+d]=l->int[0];
}d=d/2;}}
void quick(sqlist *l,int low,int high) //快速排序
while(iint[i]<=temp) //左端進行掃瞄
i++;
if(iint[j]=l->int[i];
j--;}}
l->int[i]=temp;
if(lowlength-1;i++) //做第i趟排序(1≤i≤length-1)
if(**all!=i) //交換值}}
void bubble(sqlist *l) //冒泡優化排序}}
}void buildheap(sqlist *l,int k,int m) //建立堆
l->int[k]=x; //插入
}void heapsort(sqlist *l) //堆排序
}void rand(sqlist *l) //隨機生成數字
}void init(sqlist *l) //初始化排序的資料
if(l->length<2||l->length>maxsize)
printf("/n");
for(i=1;i<=l->length;i++)
}printf("/n/n/n/n/t/t/t資料初始化成功,按任意鍵繼續→/n");
getch();
system("cls");
}void prin() //格式化輸出─
int menue()
fflush(stdin);
return input_data;
}void sub_menue()}}
void main(void)
}while(input_data!=3);
}
C語言實現各種排序演算法
對輸入的n個數進行排序並輸出。輸入描述 輸入的第一行包括乙個整數n 1 n 100 接下來的一行包括n個整數。輸出描述 可能有多組測試資料,對於每組資料,將排序後的n個整數輸出,每個數後面都有乙個空格。每組測試資料的結果佔一行。輸入例子 4 1 4 3 2 輸出例子 1 2 3 4 ac code ...
C語言實現各種排序(1)
include 排序分為插入排序,希爾排序,氣泡排序,快速排序,選擇排序,堆排序,歸併排序,基數排序 桶排序 直接插入排序,較為簡單,思路為從第二個數開始逐個將其插入前面有序的序列中 平均時間複雜度為o n2 最快時間複雜度為o n 最壞時間複雜度為o n2 空間複雜度為o 1 void inser...
拓撲排序的 語言實現
執行步驟 由aov網構造拓撲序列的拓撲排序演算法主要是迴圈執行以下兩步,直到不存在入度為0的頂點為止。1 選擇乙個入度為0的頂點並輸出之 2 從網中刪除此頂點及所有 出邊。迴圈結束後,若輸出的頂點數小於網中的頂點數,則輸出 有迴路 資訊,否則輸出的頂點序列就是一種拓撲序列。ifndef queue ...