数据结构排序1-冒泡,选择,插入排序
生活随笔
收集整理的這篇文章主要介紹了
数据结构排序1-冒泡,选择,插入排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
冒泡排序 ,選擇排序,插入排序
#include<iostream> #include<stdio.h> #include<stdlib.h> #include<random> #include<time.h> #include<sys/timeb.h> using namespace std; #define MAX 10long getSystemTime() {struct timeb tb;ftime(&tb);return tb.time * 1000 + tb.millitm; //毫秒 }void printArr(int arr[], int length) {for (int i = 0; i < length; i++){printf("%d ", arr[i]);}printf("\n"); }void Swapp(int *a, int *b) {//int temp;int temp = *a;*a = *b;*b = temp; }//從小到大排序 void bubbleSort1(int arr[], int length) {for (int i = 0; i < length; i++) //從前到后排序{for (int j = 0; j < length - i - 1; j++){if (arr[j] > arr[j + 1]){Swapp(&arr[j], &arr[j + 1]);}}} } //從小到大排序 void bubbleSort2(int arr[], int length) {for (int i = 0; i < length; i++) //從后往前排序{for (int j = length - 1; j > i; j--){if (arr[j] < arr[j - 1]){Swapp(&arr[j], &arr[j - 1]);}}} }//冒泡排序2改進版 int flag = 0; //0表示沒有排序好 void BubbleSort(int arr[], int length) {for (int i = 0; i < length&&flag==0; i++) //從后往前排序{flag = 1; //認為已經排序好for (int j = length - 1; j > i; j--){if (arr[j] < arr[j - 1]){flag = 0;Swapp(&arr[j], &arr[j - 1]);}}} }//從小到大排序 void selectSortme(int arr[], int length) { for (int i = 0; i < length; i++) //從前到后排序{//for (int j = i+1; j < length-i-1; j++)//這里j初始值在一直增加,所以長度為lengthfor (int j = i + 1; j < length; j++){if (arr[j] <= arr[i]){Swapp(&arr[i], &arr[j]);}}printf("");printArr(arr, MAX);} } void selectSort(int arr[], int length) {for (int i = 0; i < length; i++) //從前到后排序{int min = i;for (int j = i + 1; j < length; j++){if (arr[j] < arr[min]){min = j;}}//Swapp(&arr[min], &arr[i]); 交換次數多if (min != i) //交換次數少{Swapp(&arr[min], &arr[i]);}} }void insertSort(int arr[], int length) //如何定義新數組??? {int j;for (int i = 1; i < length; i++) //從第二個數開始是無序隊列。第一個數為有序隊列{if (arr[i]<arr[i-1]){int temp = arr[i]; //將滿足條件的元素緩沖到temp中for (j = i-1; j >=0 && temp < arr[j]; j--) //將前面的移到后面,方便插入{arr[j + 1] = arr[j];}arr[j + 1] = temp; //填補坑}} }int main() {int arr[MAX];srand((unsigned int)time(NULL)); //種子for (int i = 0; i < MAX; i++){arr[i] = rand() % MAX;}printf("未排序數組為:");printArr(arr, MAX);long t_start = getSystemTime();insertSort(arr, MAX);long t_end = getSystemTime();printf("冒泡排序后數組為:");printArr(arr, MAX);//printf("冒泡排序%d個元素,所需時間:%1d\n", MAX, t_end - t_start);system("pause");return 0; }?
插入排序過程:
總結
以上是生活随笔為你收集整理的数据结构排序1-冒泡,选择,插入排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STL14-set/multiset容器
- 下一篇: TensorFlow1-张量