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