關於常用排序等演算法的例子整理

2021-07-04 21:29:15 字數 2064 閱讀 4962

#include

#include

#include

#include

using namespace std;

void printarray(int a, int n);

/**插入排序**/

void insersort(int a, int n)  //效率o(n*n)

a[x + 1] = temp;

}printarray(a, n);}}

/*選擇排序*/

void selectinsort(int a, int n)

}printarray(a, n);}}

/*堆排序*/

// 時間複雜度: o(nlogn )。

//curindex :當前調整的位置

//n         :整個長度

void adjustheap(int a, int curindex, int n)

if (a[curindex] < a[right])

else

a[curindex] = temp;

}printarray(a, n);

}void buildheap(int a, int n)

}void heapsort(int a, int n) 

}/*交換排序---> 冒泡*/

void bubblesort(int a, int n)}}

}/*交換排序---> 冒泡改進演算法1*/

void bubblesortnew1(int a, int n)

}i = pos; //位下一趟做準備

printarray(a, n);}}

/*找出最大和最小,冒泡法*/

void bubblesortnew2(int a, int n)

}printarray(a, n);

--high;*/

for (j = high; j > low; --j)

}++low;

printarray(a, n);}}

/**快速排序  (o(nlog2n))*/

void swap(int *a, int *b)

int biarypart(int a, int low, int high)

swap(&a[high], &temp);

while (low < high && temp < a[low])

swap(&a[low], &temp);

}printarray(a, 6);

return low;

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

}/*歸併排序*/

// 合併

void merge(int a, int start, int mid, int end)

memset(left, 0, n1);

int *right;

right = (int *)malloc(sizeof(int)*n2);

if (null == right)

memset(right, 0, n2);

///int i  = 0, j = 0;

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

for (j = 0; j < n2; j++)

i = j = 0;

int k = start;

while (i < n1 && j < n2)

else

}while (j < n2)

while (i < n1)

}void mergesort(int a, int start, int end)

}/*基數排序*/

/*列印輸出*/

void printarray(int a, int n)

printf("\n");

}int main()

;mergesort(a, 0, 5);

printarray(a, sizeof(a) / sizeof(a[0]));

return 0;

}

常用排序演算法整理

1.氣泡排序 void bubble sort int s,int len 2.插入排序 void insert sort int s,int len 3.快速排序 採用分治法,先選取乙個數pivot,把小於pivot的數移到它的左邊,大於pivot的數移到它的右邊,然後進行遞迴呼叫 int par...

關於常用的排序演算法

排序演算法 平均時間複雜度 氣泡排序 o n2 選擇排序 o n2 插入排序 o n2 希爾排序 o n1.5 快速排序 o n logn 歸併排序 o n logn 堆排序o n logn 基數排序 o d n r 所謂氣泡排序 就是比較兩個相鄰的數,大的下沉小的上浮,這種方法時間複雜度為o n ...

整理了下常用的排序演算法

例子中都是從小到大排序的。1 插入排序 1.1 直接插入排序 將乙個記錄插入到乙個有序的列表中,得到乙個新的,記錄數加一的新的列表。進行關鍵字比較和移動的次數約 n 2 4,時間複雜度o n 2 1.2 折半插入排序 在直接插入排序的基礎上減少比較的次數。其中 查詢 的動作用 折半查詢 來實現。只能...