陣列排序C C

2021-08-08 23:20:38 字數 1515 閱讀 8160

軟體中對使用者操作習慣的統計,**中對各種使用者資料的排行,這些資料往往是接近隨機的,為了方便利用這些資料,所以我們需要將這些資料進行排序。

將陣列排序的方法有非常多,但大部分是大同小異,但經典的排序演算法有9種,它們各有利弊,根據陣列大小和陣列中資料的某些性質選擇適當的排序演算法。至於這些排序演算法的**網上已經詳盡,筆者就不在這裡累贅了。

筆者這兩天因使用了visual studio而接觸了一點點c++,於是便使用c++根據自己的思路簡單的實現了乙個排序演算法,此演算法類似雞尾酒排序演算法,但卻不是,有可能時筆者獨創的演算法吧。

#include 

#include

#include

#define size 500 //陣列中元素的數量

void swap(int *p1, int *p2) //交換陣列中的兩元素

int main()

printf("\n\n 按下任意鍵開始排序");

getchar(); //等待使用者響應

system("cls"); //清除所有輸出結果

int l = -1, u = size - 1; //定義我們需要尋找最值並排序的初始區間[0,size]為全集

for (l++; l < u; u--)

swap(&array[l], &array[min]); //交換陣列在未排序區間中的最小值與陣列在未排序區間左端點的值

swap(&array[u], &array[max]); //交換陣列在未排序區間中的最大值與陣列在未排序區間右端點的值

printf("陣列正在排序:\n\n");

for (int i = 0; i < size; i++)

system("cls"); //清除所有輸出結果

}printf("排序後陣列:\n\n");

for (int i = 0; i < size; i++)

getchar(); //等待使用者響應(防止程式自動退出)

此排序演算法的基本思路其實就是不斷縮小乙個尋找最小值和最大值的區間,將最小值和最大值與此區間最右端和最左端的元素交換位置,直到這個區間為空,那麼就全部排序完成了。因**中注釋已經足夠詳細,這裡就不累贅了。

刷題經驗 C C 陣列 排序 查詢

3.搜尋 查詢 0.參考與引用 4個月沒有碰鍵盤了,開學遙遙無期,偏偏電腦還在學校,取不得,真叫人藍瘦。來到大姑家,一部12年前的台式電腦,登陸了久違的leetcode,一道簡單的題目 56.合併區間 但是c 語法點難住我了,大致思路是二維陣列按照區間左端點從小到大排序,然後看排序後的每乙個區間的右...

c c 各種排序

一 各種排序方法的時間 空間複雜度情況 1 直接插入排序 比較次數 最少n 1次 最多 n 1 n 2 2 移動次數 最少0 最多 n 1 n 4 2 使用乙個輔助儲存空間,是穩定的排序 2 折半插入排序 比較次數 最少與最多同,都是n log2n 其中2為底,下邊表示同 移動次數 最少0,最多時間...

排序演算法c c

include void bubble sort1 int array,int arraysize int main void bubble sort1 array,5 排序好後為 1 2 3 4 5 int i for i 0 i 5 i printf d array i puts 以前做排序為了...