七大排序演算法實現
#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 氣泡排序 ...