void bubblesort(int arr, int size)
}if (issorted == 1)
}}
void _quicksort(int arr, int left, int right)
if (left > right)
int div = partition_01(arr, left, right);//分成左右小區間[left,div-1];[div+1,right]
_quicksort(arr, left, div - 1);
_quicksort(arr, div + 1, right);
}void quicksort(int arr, int size)
<1>.hover法 (左右指標)時間複雜度:o(n)
int partition_01(int arr, int left, int right)
swap(arr + begin, arr + end);
}swap(arr + begin, arr + end);
return begin;
}
<2>.挖坑法
找個變數pivot存基準值,則需要交換的值的位置為坑,直接可以換過來
begin,end對應的即為坑
int partition_02(int arr, int left, int right)
arr[begin] = arr[end];
}arr[begin] = pivot;
return begin;
}
<3>.左右指標法
int partition_03(int arr, int left, int right)
}swap(arr + div, arr + right);
}
交換排序 氣泡排序,快速排序
交換排序 氣泡排序,快速排序 執行環境 vs2010 include include include include define ok 1 define true 1 define false 0 define maxsize 50 typedef struct redtype typedef s...
交換排序(快速排序 氣泡排序)
1.快速排序 先從數列中取出乙個數作為基準數 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊 再對左右區間重複第二步,直到各區間只有乙個數。以乙個陣列作為示例,取區間第乙個數為基準數。0 1 2 3 4 5 6 7 8 9 72 6 57 88 60 42 83 73 4...
交換排序(氣泡排序,快速排序)
氣泡排序演算法 顧名思義,就是將最重的 最大元素 浮動到最下面,最輕的 最小元素 浮動到最上面 演算法過程 1.迴圈陣列長度length 1次,下標為 因為每次迴圈後就會出現乙個最大 公升序 或最小 降序 只需要比較n 1就行 1.1 在前 length i個元素中迴圈因為已經有i個已經有序 1.1...