資料結構和演算法 七大排序演算法實現

2021-10-07 05:00:49 字數 1797 閱讀 4988

七大排序演算法實現

#include using namespace std;

void swap(int* num1,int* num2)

//1.選擇排序演算法

bool selectionsort(int* arr, int len)

} if (max != (len - i - 1))

} return true;

}//2.氣泡排序演算法

bool bubblesort(int* arr, int len)

} if (sorted)return true;

} return true;

}//3.插入排序演算法

bool insertionsort(int* arr, int len)

arr[preindex + 1] = current;

} return true;

}//4.希爾排序演算法

bool shellsort(int* arr, int len)

arr[j + gap] = current;

} }return true;

}//5.歸併排序演算法:<1要排序的陣列<2左下標<3中間下標<4右下標<5臨時陣列

void mergeadd(int* arr, int left, int mid, int right,int *tmp)

else

} while (i < mid)

while (j <= right)

memcpy(arr + left, tmp + left, sizeof(int) * (right - left + 1));

}void mergesort(int* arr, int left, int right, int* tmp)

}//7.快速排序演算法實現

int partition(int arr, int low, int high)

if (i < j)

while(i < j && arr[i] < base)

if( i < j)

} arr[i] = base;

}return i;

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

}int main(void) ;

int len = sizeof(arr) / sizeof(arr[0]);

int* tmp = new int[len];

//1.選擇排序

//selectionsort(arr, sizeof(arr) / sizeof(arr[0]));

//2.氣泡排序

//bubblesort(arr, sizeof(arr) / sizeof(arr[0]));

//3.插入排序

//insertionsort(arr, sizeof(arr) / sizeof(arr[0]));

//4.希爾排序

//shellsort(arr, sizeof(arr) / sizeof(arr[0]));

//5.堆排序見資料結構和演算法——最大堆

//6.歸併排序

//mergesort(arr,0,7,tmp);

//7.快速排序

//quicksort(arr, 0, 7);

for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)

return 0;

}

資料結構 七大排序演算法總結

面試中,無論是問還是寫,排序被問到的次數總是很多。總結一些八大排序演算法。插入,希爾,選擇,堆 冒泡,快速 歸併 排序方法 初始序列有無影響 最好情況 最壞情況 插入排序 有正序有序這樣只需要比較n次,不需要移動。因此時間複雜度為o n 逆序有序這樣每乙個元素就需要比較n次,共有n個元素,因此實際複...

七大排序演算法

氣泡排序 void bubble int a,int n 選擇排序 void select sort int a,int n n為陣列a的元素個數 將第i 小的數,放在第i 個位置 如果剛好,就不用交換 if i min index 插入排序 typedef int elementtype void...

七大排序演算法

七大排序分類 插入排序 直接插入排序 穩定 希爾排序 不穩定 選擇排序 簡單選擇排序 穩定 堆排序 不穩定 交換排序 氣泡排序 穩定 快速排序 不穩定 歸併排序。直接插入排序 時間複雜度 o n 2 演算法穩定性 穩定void straightinsertsort int a,int n 氣泡排序 ...