資料結構 基礎排序演算法

2021-07-04 14:45:51 字數 1972 閱讀 2792

#include

using namespace std;

void out_print(int arr,int len)

}void swap(int &i,int &j)//交換函式

/*void straigthinsertsort(int arr,int len)//直接插入排序

arr[j+1]=e;}}

//直接插入排序的時間複雜度為o(n^2)*/

/*void shellinsert(int arr,int len,int incr)//incr為增量

//希爾排序的思想為先將整個序列分割為若干個子串行,等序列中元素基本有序,再對全體元素進行一次插入排序

arr[j+incr]=e;}}

void shellsort(int arr,int len,int t,int inc)//t為增量長度inc為增量陣列

out_print(arr,len);

}*//*int partition(int arr,int low,int high)//快速排序,中心思想:任選乙個數字將比他大的數放在右邊比他小的數放在左邊,在依次對其排序

return low;

}//操作結果為返回軸的位置

void quitsorthelp(int arr,int low,int high)//完成快速排序,利用遞迴

}void quitsort(int arr,int len)

*///快速排序的平均時間複雜度o(nlogn),當陣列有序時為o(n^2)和氣泡排序一樣

/*void ******selectsort(int arr,int len)//簡單選擇排序,在n-1次排序中選擇最小的數作為第i個數,時間複雜度為o(n^2)

swap(arr[i],arr[index]);

}out_print(arr,len);

}*///堆排序是一種基於選擇排序的先進排序演算法

/*void siftadjust(int arr,int low,int high)

//調整arr[low],使其成為大頂堆

}void heapsort(int arr,int len)

//out_print(arr,len);

for(i=len-1;i>=0;i--)//交換頂堆元素與最後乙個元素,重新調整堆為大頂堆

out_print(arr,len);

}*///歸併排序

/*void ******sort(int arr,int low,int mid,int high)//將兩個有序陣列進行排序

else

}for(;i<=mid;i++)

for(;j<=high;j++)

for(i=low,k=0;i<=high;i++,k++)

delete elem;

}void ******mergesort(int arr,int low,int high)//利用遞迴將陣列進行排序

}void mergesort(int arr,int len)

//歸併排序的演算法是將陣列先分為n個陣列,進行排序,再講n/2個有序陣列進行排序,

//以此類推最後將最後0-mid,和mid+1~high這兩個有序陣列進行排序,時間複雜度為o(nlogn)

;int len=sizeof(arr)/sizeof(int);

//straigthinsertsort(arr,len);

/*int t=len/2;

int inc=t;  //inc為增量,從len/2開始,每次減一,知道減為0,shell排序的基本思想,陣列越有序,時間複雜度越低,最低為o(n^1.5);

shellsort(arr,len,t,inc);*/

//quitsort(arr,len);

//******selectsort(arr,len);

//heapsort(arr,len);

mergesort(arr,len);

return 0;

}

資料結構和演算法 1 基礎排序演算法

冒泡 選擇插入 陣列的大小會使演算法的效能產生很大的差異。選擇排序比氣泡排序快了 100 多倍,而且選擇排序比插入排序快了 200 多倍。當陣列元素量增加到 10000 個的時候,確實能看出陣列大小對三種排序演算法的影響。優先順序 選擇排序 氣泡排序 插入排序 1.氣泡排序 public stati...

資料結構 排序演算法

include include define maxitem 100 typedef char keytype 5 typedef int elemtype typedef struct rec elemnode maxitem 氣泡排序演算法 void bubblesort elemnode r,...

資料結構 排序演算法

排序演算法分為內部排序和外部排序兩大類。內部排序 在計算機記憶體中完成的排序演算法 外部排序 不能再記憶體中文完成,必須在磁碟或者磁帶上完成的排序演算法 內部排序是研究的重點問題,通常我們講的八大排序演算法也主要是講的內部排序演算法。排序演算法的穩定性和時間空間複雜度 本文重點介紹以下幾種排序演算法...