排序有多种,里面的算法很巧妙,不写例子,只敲些核心代码。总体的有插入,选择,交换,分配,归并五种。有些没解释的是我感觉很难或者很偏。
一、插入
1.直接插入
最直接明了,依次拿出排序码中的每一个,与前面的数比较大小,插入相应的位置。直至所有的数字比较完毕。
int i,j,n;
//n为排序码个数 data[n]为整个排序码组
Node temp;
for(i = 1; i < n; ++i){
temp = data[i];
for(j = i-1; temp.value < data[i].value && j >= 0; j--)
data[j+1] = data[j];//从取出的数字后面开始往前面取,比该数字大的往前移
if(j != i -1) data[j+1] = temp; //如果循环中取出的数字保持原位不动 则不用更改
}
2.二分法插入
不用依次对比,如果前面的排好序,只需要找到前面排序码组的中间数,数大则在中间的前面,反之即后。