void x_sort (elementtype a, int n) //預設討論從小到大的整數排序
void bubble_sort(elementtype a, int n)
} if (flag == 0) break;//無交換則退出
}}
void insert_sort(elementtype a, int n)
a[i] = tmp;
}}
優點:穩定
void sheel_sort(elementtype a, int n)
a[i] = tmp;
} }}
增量序列d因情況而異,特殊情況下互質的增量序列是沒有效果的;
void select_sort(elementtype a, int n)
} int tmp = a[i];
a[i] = a[minid];
a[minid] = tmp;
}}
void merge(elementtype a, elementtype temparr, int left, int mid, int right)
else
}while (l_pos <= mid)
while (r_pos <= right)
while (left <= right) }
void msort(elementtype a, elementtype temparr, int left, int right)
}void merge_sort(elementtype a, int n)
else
}
/* l = 左邊起始位置, r = 右邊起始位置, rightend = 右邊終點位置*/
void merge( elementtype a, elementtype tmpa, int l, int r, int rightend )
while( l <= leftend )
tmpa[tmp++] = a[l++]; /* 直接複製左邊剩下的 */
while( r <= rightend )
tmpa[tmp++] = a[r++]; /* 直接複製右邊剩下的 */
// 該過程可忽略
// for( i = 0; i < numelements; i++, rightend -- )
// a[rightend] = tmpa[rightend]; /* 將有序的tmpa複製回a */}
void merge_pass( elementtype a, elementtype tmpa, int n, int length )
void merge_sort( elementtype a, int n )
free( tmpa );
}else printf( "空間不足" );
}
未完待續。。。。。 資料結構與演算法 排序
排序原理 1.比較相鄰的元素。如果前乙個元素比後乙個元素大,就交換這兩個元素的位置。2.對每一對相鄰元素做同樣的工作,從開始第一對元素到結尾的最後一對元素。最終最後位置的元素就是最大 值。氣泡排序的 實現 public static void sortpop int arr 測試 public st...
《資料結構與演算法 排序》
1 快速排序 1.記錄 排序中的結點 2.檔案 一系列結點構成的線性表 3.排序又稱分類 4.排序碼 結點中乙個或者多個字段,其值作為排序運算中的根據。基本思想 每次選擇待排序的記錄序列的第1個記錄,按照排序碼的大小將其插入到已排序的記錄序列的適當位置,直到所有記錄全部排序完畢。最簡單的排序方法。整...
資料結構與演算法 排序演算法
帶問題思考以下幾點 1 每個演算法的思想是什麼?2 每個演算法的穩定性怎樣?時間複雜度是多少?3 在什麼情況下,演算法出現最好情況 or 最壞情況?4 每種演算法的具體實現又是怎樣的?n每次選擇乙個元素k插入到之前已排好序的部分a 1 i 中,插入過程中k依次由後向前與a 1 i 中的元素進行比較。...