两种应该掌握的排序方法--------2.quick Sort

介绍

http://zh.wikipedia.org/wiki/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F

 

 

用些里面的c++ 实现,感觉这个空间复杂度比较小。还挺好

 
int partition(int* array, int left, int right)
{
        int index = left;

        int pivot = array[index];


        swap(array[index], array[right]);
        for (int i=left; i<right; i++)
        {
                if (array[i] > pivot)  // 降序
                        swap(array[index++], array[i]);
        }
        swap(array[right], array[index]);
        return index;

}
 
void qsort(int* array, int left, int right)
{
        if (left >= right)
                return;
        int index = partition(array, left, right);
        qsort(array, left, index - 1);
        qsort(array, index + 1, right);
}

 

//======================

调用端

    int i_List_[] ={3, 7 ,8, 5, 2, 1, 9, 5, 4};
    int count_ = sizeof(i_List_)/4;
    qsort(i_List_, 0, count_-1);

 

 

 

 

===========


void shellsort1_1(int *data, size_t size)
{
int index = 0;
for (int gap = size / 2; gap > 0; gap /= 2)
for (size_t i = gap; i < size; ++i)
{
int Temp = data[i];
int j = 0;
for (j = i - gap; j >= 0 && data[j] > Temp; j -= gap)
{
data[j + gap] = data[j];
}
data[j + gap] = Temp;

printf("index=%d, \n", index++);
}


}

void bubble_sort(int* unsorted, unsigned int Length)
{
int index = 0;


for (int i = 0; i < Length; i++)
{
for (int j = i; j < Length; j++)
{
if (unsorted[i] > unsorted[j])
{
int temp = unsorted[i];
unsorted[i] = unsorted[j];
unsorted[j] = temp;
}
printf("index=%d, \n", index++);
}
}
}

int main()
{

int a[20];
memset(a, 0, sizeof(int)*20);


//shellsort1_1(a,20);//60
bubble_sort(a,20);//400

return 0;
}

 

posted @   scott_h  阅读(220)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示