什麼叫穩定排序呢?比如排序中有兩個一摸一樣的數字,如果排完序,兩個相同的數字順序沒有改變,就是穩定的, 反之,就是非穩定的。
穩定排序包括:
另外,排序演算法還能分為: 內部排序、外部排序(當前陣列不可以全部載入到記憶體中,需要分段載入)
#include
#include
#include
#include
#define swap(a, b) __typeof(a) t = a; a = b; b = t
int num[
1000];
//小的在前
//插排
void
insert_sort
(int
*num,
int n)}/*
* for (int j = i; j > 0 && num[j] < num[j - 1]; j--)
*/}return;}
//冒泡
void
bubble_sort
(int
*num,
int n)}}
}//歸併
void
merge_sort
(int
*num,
int l,
int r)
return;}
//中分
int mid =
(l + r)
>>1;
merge_sort
(num, l, mid)
;merge_sort
(num, mid +
1, r)
;//回溯
//開闢新的空間,將排序好的數往裡面放
int*temp =
(int*)
malloc
(sizeof
(int)*
(r - l +1)
);int p1 = l, p2 = mid +
1, k =0;
while
(p1 <= mid || p2 <= r)
else
}memcpy
(num + l, temp,
sizeof
(int)*
(r - l +1)
);free
(temp)
;return;}
void
out(
int*arr,
int n)
printf
("\n");
}int
main()
out(arr, maxop)
;int test[maxop]
;memcpy
(test, arr,
sizeof
(int
)*maxop)
;//printf("insert:");
//insert_sort(test, maxop);
//printf("bubble:");
//bubble_sort(test, maxop);
printf
("merge:");
merge_sort
(test,
0, maxop-1)
;out
(test, maxop)
;#undef maxop
}
C 實現各種排序 快排 插排 冒泡
1 插入排序 插入排序 主要思想 將陣列中的第乙個數認為是有序排列,剩下的n 1個數與第乙個數比較,再進行排序 有兩層迴圈,第一層控制排序的趟數,第二層控制每一趟比較的個數 include using namespace std int main for int i 0 i 10 i cin a i...
排序 冒泡,快排,歸併。
1 冒泡 就是每次相鄰的比較,較大的移到後面,一次後就移動最大的到最後面了。include void maopao int a,int len void main int len sizeof a sizeof a 0 maopao a,len for int x1 0 x12 快速排序,用遞迴來理...
穩定排序(插入排序 氣泡排序 歸併排序)
插入排序 我們可以從字面意思去理解這個排序方式,可以把序列前後分為兩部分有序序列和待排序列,不斷的在待排序列中取出乙個數按某規則 從大到小或者從小到大 插入到有序序列中,直到待排序列都完成排序結束。演示 視覺化演算法 推薦 ps 本圖出處為此 c語言 實現 void insert sort int ...