顺序表的使用
顺序表其实在生活中有很多的应用,比如各类东西的排序,查找某个特定的数据,删除某个数据等等,今天我就给大家展现几个比较常用的实现。
1.二分查找
算法:二分查找是设立了最左,最右和中间值,将中间值和要查找的那个数进行比较,依次去缩小那个数据的范围,从而找到那个数。
与普通查找不同的是二分查找的时间复杂度为O(logN),普通查找都要从头找一遍,时间复杂度为O(N);
而二分查找这种算法在生活中应用也比较广,效率会更高。
代码实现:
int SeqListBinaryFind(SeqList* ps, SLDataType x)
{
// [begin, end]
int begin = 0, end = ps->_size-1 ;
while (begin <= end)
{
int mid = (begin + end) / 2;
if (ps->_array[mid] < x)
{
begin = mid + 1;
}
else if (ps->_array[mid] > x)
{
end = mid - 1;
}
else
{
return mid;
}
}
return -1;
}
2.冒泡排序(稳定排序)
算法:这种排序方法是两两个进行比较将大(小)的向后(前)进行调整,而它的终止位置是在上次调整的最后一个位置&