当前位置: 代码迷 >> 综合 >> 数据结构七大算法
  详细解决方案

数据结构七大算法

热度:89   发布时间:2024-02-11 04:55:09.0
  • 1:冒泡排序
单向冒泡排序
void BubbleSort(int a[], int length)//冒泡排序
{int i, j;for(i = 0; i < length-1; i++)///length-1个数需要进行比较{for(j = 0; j < length-1-i; j++)每循环一次可以找到最大的数放在最后一个位置、依次进行{if(a[j] > a[j+1])    //若前一个数大于后一个数,则交换位置{Swap(a[j], a[j+1]);}}}
}双向冒泡排序
void  DoubleBubbleSort(int a[],int length)
{int low=0,high=length-1,i,j;while(low<high){for(i=low;i<high;i++)//正向冒泡,从前往后找最大值{if(a[i]>a[i+1]){swap(a[i],a[i+1]);}}high--;for(j=high;j>low;j--)//反向冒泡,从后往前找最小值{if(a[j]<a[j-1]){swap(a[j],a[j-1])}}low++;}}
  • 2:快速排序

        

void QuickSort_1(int a[], int left, int right)
{int i=left,j=right,k=a[right];//选择最后一个元素为基准元素while(i < j){while(i < j && arr[i] <= k)//正向遍历、找出大于基准元素的下标{i++;}arr[j] = arr[i];while(i <j && arr[j] >= k)反向遍历、找出小于基准元素的下标{j--;}arr[i] = arr[j];}arr[i] = k;QuickSort_1(arr, left, i-1);            //递归完成基准元素左边序列的排序QuickSort_1(arr, i+1, right);           //递归完成基准元素右边序列的排序
}
  • 3:简单选择排序

void  SelectSort(int a[],int length)
{int i=0,j=length-1,k;for(;i<length-1;i++){k=i;for(j=i+1;j<length;j++){if(a[k]>a[j])///记住最大值下标k=j;}if(k!=i){swap(a[i],a[k]);//交换最大值下标}}}
  • 4:堆排序
  • 5:希尔排序
  • 6:归并排序
  • 7:直接插入排序