一日一碼01——氣泡排序
一切成功都源於積累!
為痛下決心要改掉眼高手低的毛病,每天一道演算法題!
先從最簡單的氣泡排序開始吧。
//氣泡排序 2013/09/06
//從小到大排序
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <malloc.h>
//每次把最後的數向前比較,小的數從後往前“冒泡”,下次比較仍從最後比起,前面已排序部分無需比較
void soapSort(int* a, int n){
int i,j,tmp,flag;
for ( i = 0 ; i < n ; i++){
flag = 0;
for ( j = n - 1 ; j > i ; j-- ){
if(a[j] < a[j-1]){
tmp = a[j];
a[j] = a[j-1];
a[j-1] = tmp;
flag = 1;
}
}
if(flag == 0){
return;
}
}
}
//每次把前面的數向後比較,大的數從前往後“冒泡”,下次比較仍從前面比起,後面已排序部分無需比較
void soapSort2(int* a, int n){
int i,j,tmp,flag;
for ( i = 0 ; i < n ; i++){
flag = 0;
for ( j = 0 ; j < n-i-1 ; j++ ){
if(a[j] > a[j+1]){
tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
flag = 1;
}
}
if(flag == 0){
return;
}
}
}
//錯誤方法,只是每次把最大的放到最後,前面的數實際上沒有排序
void soapSort_error(int* a, int n){
int i,j,tmp,flag;
for ( i = 0 ; i < n ; i++){
flag = 0;
for ( j = i ; j < n - 1; j++ ){
if(a[j] > a[j+1]){
tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
flag = 1;
}
}
if(flag == 0){
return;
}
}
}
int initArr(int** a){
int i,n;
srand(time(NULL));
printf("Input the size of array:");
scanf("%d",&n);
*a = (int *)malloc(n*sizeof(int));
for(i = 0; i < n; i++){
(*a)[i] = rand()%100;
//*(*a+i) = rand()%100;
}
return n;
}
void printArr(int* a, int n){
int i;
for (i = 0;i < n; i++){
printf("%d,",a[i]);
}
printf("\n");
}
void main(){
int* arr;
int n;
n = initArr(&arr);//傳地址
printArr(arr,n);
soapSort(arr,n);
printArr(arr,n);
}
相關文章
- 排序——氣泡排序排序
- 氣泡排序排序
- 9. 氣泡排序,以及如何優化氣泡排序,氣泡排序屬於插入排序排序優化
- 排序:氣泡排序&快速排序排序
- js氣泡排序JS排序
- JavaScript氣泡排序JavaScript排序
- 氣泡排序1排序
- 氣泡排序-fusha排序
- 氣泡排序演示排序
- Shell氣泡排序排序
- d氣泡排序排序
- 容器氣泡排序排序
- 氣泡排序法排序
- 氣泡排序(Java)排序Java
- Python 氣泡排序Python排序
- 無聊寫一個氣泡排序排序
- 淺析氣泡排序排序
- 陣列氣泡排序陣列排序
- Python_氣泡排序Python排序
- 氣泡排序筆記排序筆記
- 氣泡排序(python版)排序Python
- 19_氣泡排序排序
- 函式氣泡排序函式排序
- 排序演算法--氣泡排序排序演算法
- 排序演算法__氣泡排序排序演算法
- 排序演算法–氣泡排序排序演算法
- 選擇排序和氣泡排序排序
- 氣泡排序與選擇排序排序
- 【排序】氣泡排序(待補充)排序
- 氣泡排序 插入排序 快排排序
- Python實現氣泡排序Python排序
- 如何優化氣泡排序?優化排序
- JAVA基礎--氣泡排序Java排序
- js氣泡排序動畫JS排序動畫
- Java實現氣泡排序Java排序
- C語言之氣泡排序C語言排序
- OJ題之氣泡排序排序
- 氣泡排序及優化排序優化
- 氣泡排序演算法排序演算法