shell脚本编程(快速排序)

分类:shell编程 阅读:30007 次

  1. #!/bin/bash
  2. #shell脚本编程之快速排序的实现(以最右边为元点的思想)
  3. a=(851032934123409618629)
  4. #a=(00001233448283049592143716)
  5. temp=
  6. buff=
  7. #交换函数
  8. swap()
  9. {
  10. buff=${a[$1]}
  11. a[$1]=${a[$2]}
  12. a[$2]=$buff
  13. }
  14. fun()
  15. {
  16. i=$(($1-1))
  17. j=$1
  18. temp=${a[$2]}
  19. iftest$1-ge$2;then
  20. return2
  21. fi
  22. while[$j-le$2];do
  23. [$j-lt$2]&&while[[${a[$j]}-gt$temp]];do
  24. j=$(($j+1))
  25. done
  26. i=$(($i+1))
  27. swap$i$j
  28. j=$(($j+1))
  29. done
  30. fun0$(($i-1))
  31. fun$(($i+2))$2
  32. }
  33. fun015
  34. for((i=0;i<16;i++))
  35. {
  36. echo-n${a[$i]}""
  37. }
  38. echo
  39. exit0

下面是C++快速排序的对照代码

  1. #include<iostream>
  2. usingnamespacestd;
  3. voidswap(int*a,int*b)
  4. {
  5. inttemp=*a;
  6. *a=*b;
  7. *b=temp;
  8. }
  9. voidGrial(inta[],intx,inty)
  10. {
  11. inti=x-1;
  12. intj=x;
  13. if(x>=y)return;
  14. inttemp=a[y];
  15. while(j<=y)
  16. {
  17. while(j<y&&a[j]>a[y])
  18. j++;
  19. i++;
  20. swap(&a[i],&a[j]);
  21. j++;
  22. }
  23. Grial(a,0,i-1);
  24. Grial(a,i+1,y);
  25. }
  26. intmain()
  27. {
  28. inta[]={4,3,921,30495,28,43716,3,4,0,0,2,0,0,1,8,5};
  29. Grial(a,0,14);
  30. for(inti=0;i<15;i++)
  31. {
  32. cout<<a[i]<<"";
  33. }
  34. cout<<endl;
  35. }