日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构排序1-冒泡,选择,插入排序

發布時間:2025/3/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构排序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-冒泡,选择,插入排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。