各種內部排序

2021-06-18 06:03:20 字數 1953 閱讀 7160

#include using namespace std;

void swap(int &x,int &y)

}/insertsort

void insertsort(int* a,int n)

a[j+1] = temp;

} }}//bubble sort 下沉

void bubblesort1(int *a, int n)

} if (!flag)

}}//bubblesort 上浮

void bubblesort2(int* a,int n)

} if (!flag)

}}//bubblesort 雙向

void bubblesort3(int* a, int low,int high)

if (a[right] < a[right-1])

}high--;

low++; }}

//selectsort

void selectsort(int* a,int n)

} if (minindex != i)

}}//quicksort

int partition(int* a,int low, int high)

a[i] = privot;

return i;

}void quicksort(int* a,int low, int high)

}//mergesort

//將有二個有序數列a[first...mid]和a[mid...last]合併。

void mergearray(int a, int first, int mid, int last, int temp)

while (i <= m)

temp[k++] = a[i++];

while (j <= n)

temp[k++] = a[j++];

for (i = 0; i < k; i++)

a[first + i] = temp[i];

}void mergesort(int a, int first, int last, int temp)

}bool mergesort(int a, int n)

//heapsort 大根堆 從小到大排序

void maxheapfixdown(int* a,int i,int n)//n為節點總數,二叉堆編號從0開始,i的父節點是 (i-1)/2 左孩子 2*i +1 右孩子 2*i +2

if (a[j] <= temp)

a[i] = a[j];

i = j;

j = 2*i + 1;

} a[i] = temp;

}void makemaxheap(int*a, int n)

}void maxheapsort(int *a,int n)

}//binaryinsertsort

void binaryinsertsort(int* a, int n)

else

}for (int j = i-1; j>=low; j--)

a[low] = current;

} }}

int main()

// insertsort(a,n);

//bubblesort1(a,n);

//bubblesort2(a,n);

//bubblesort3(a,0,n-1);

//selectsort(a,n);

//quicksort(a,0,n-1);

//mergesort(a,n);

//makemaxheap(a,n);

//maxheapsort(a,n);

binaryinsertsort(a,n);

for (int i = 0; i < n; i++)

return 0;

}

各種內部排序的比較

各種內部排序按所採用的基本思想 策略 可分為 插入排序 交換排序 選擇排序 歸併排序和基數排序,它們的基本策略分別是 1 插入排序 依次將無序序列中的乙個記錄,按關鍵字值的大小插入到已排好序乙個子串行的適當位置,直到所有的記錄都插入為止。具體的方法有 直接插入 表插入 2 路插入和shell排序。2...

實驗5各種內部排序演算法

各種內部排序演算法 實現直接插入排序演算法 希爾排序 快速排序演算法 直接選擇排序演算法,並用main函式測試。include typedef struct recordtype recordtype void directinsersort recordtype r,int n 直接插入排序 r ...

詳談內部排序之各種插入排序

如上圖的插入撲克牌就是生活中最常見的插入排序。直接插入排列過程 先將序列中第 1 個記錄看成是乙個有序子串行,然後從第 2 個記錄開始,逐個進行插入,直至整個序列有序。例題 為直接插入排序的詳細過程,其中有一些注意事項 1 資料中有兩個49,其中乙個加粗,用來判斷這兩個49的前後順序是否發生變化,然...