黑马程序员技术交流社区

标题: 数组元素排序 [打印本页]

作者: lixp    时间: 2015-11-6 20:03
标题: 数组元素排序
  1. rest(int a[], int n)
  2. {
  3.         int i,low,high,t;

  4.         for(i=0,low=0,high=n-1;i<=high;)
  5.         {
  6.                 if(a[i]>0)
  7.                 {
  8.                         /*a[i]与a[high]交换,随之high减1*/
  9.                         t=a[i];
  10.                         a[i]=a[high];
  11.                         a[high]=t;
  12.                         high--;
  13.                 }
  14.                 else if(a[i]==0)
  15.                         i++; /* 掠过该元素 */
  16.                 else
  17.                 {
  18.                         /*a[i]与a[low]交换,随之low增1, i增1*/
  19.                         t=a[i];
  20.                         a[i]=a[low];
  21.                         a[low]=t;
  22.                         low++;
  23.                         i++;
  24.                 }
  25.         }
  26. }
  27. int s[]={8,4,0,-1,6,0,-5};
  28. main()
  29. {
  30.         int i;
  31.         clrscr();
  32.         printf("\n The arry before rest is:\n");
  33.         for(i=0;i<sizeof(s)/sizeof(s[0]);i++)
  34.                 printf("%4d",s[i]);
  35.         rest(s,sizeof(s)/sizeof(s[0]));
  36.         printf("\n The arry after rest is:\n");
  37.         for(i=0;i<sizeof(s)/sizeof(s[0]);i++)
  38.                 printf("%4d",s[i]);
  39.         printf("\n Press any key to quit...\n");
  40.         getch();
  41. }
复制代码

作者: jeffdy66    时间: 2015-11-6 23:03
冒泡排序思想 :


int a[6]={6,8,1,3,5,2};
int temp;
for (int i =0;i<6; i++){

for (int j=0;j<6;j++){

if(a[i]>a[j]){

temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for (int i =0;i<6;i++){
printf("%d\t",a[i]);

}  遍历数组


作者: 正在输入中...    时间: 2015-11-7 00:25
其实排序有很多种,其中简单的可能大家知道有冒泡、插入,其实还有很多种,如果你感兴趣我们可以聊一聊,排序还有直接选择排序,插入排序、堆排序、希尔排序、基数排序、计数排序、桶排序、快速排序,应用场合不同,时间复杂度和空间复杂度也不同。
作者: 熊德玺    时间: 2015-11-7 01:35
赞一个  




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2